1 | |||
2 | from rest_framework.response import Response |
||
3 | from rest_framework.decorators import api_view |
||
4 | |||
5 | from django_th.models import TriggerService |
||
6 | from django_th.services import default_provider |
||
7 | |||
8 | from th_slack.models import Slack |
||
9 | |||
10 | |||
11 | View Code Duplication | def consumer(trigger_id, data): |
|
0 ignored issues
–
show
Duplication
introduced
by
![]() |
|||
12 | """ |
||
13 | call the consumer and handle the data |
||
14 | :param trigger_id: |
||
15 | :param data: |
||
16 | :return: |
||
17 | """ |
||
18 | status = True |
||
19 | # consumer - the service which uses the data |
||
20 | default_provider.load_services() |
||
21 | service = TriggerService.objects.get(id=trigger_id) |
||
22 | |||
23 | service_consumer = default_provider.get_service( |
||
24 | str(service.consumer.name.name)) |
||
25 | kwargs = {'user': service.user} |
||
26 | |||
27 | if len(data) > 0: |
||
28 | |||
29 | getattr(service_consumer, '__init__')(service.consumer.token, |
||
30 | **kwargs) |
||
31 | status = getattr(service_consumer, 'save_data')(service.id, **data) |
||
32 | |||
33 | return status |
||
34 | |||
35 | |||
36 | @api_view(['POST']) |
||
37 | def slack(request): |
||
38 | data = {} |
||
39 | # check that the data are ok with the provided signature |
||
40 | slack = Slack.objects.filter(slack_token=request.data['token'], |
||
41 | team_id=request.data['team_id']).get() |
||
42 | if slack: |
||
43 | data['title'] = 'From Slack #{}'.format(request.data['channel_name']) |
||
44 | data['content'] = request.data['text'] |
||
45 | status = consumer(slack.trigger_id, data) |
||
46 | if status: |
||
47 | return Response({"message": "Success"}) |
||
48 | else: |
||
49 | return Response({"message": "Bad request"}) |
||
50 |