notify.py 915 Bytes
Newer Older
1
import json
2 3

from flask_restful import abort, request
Dan Jones's avatar
Dan Jones committed
4
from marshmallow import Schema, fields
5

6
from endpoints.auth_resource import AuthResource
7
from rmq import write_to_queue
8

9

10 11
class NotifySchema(Schema):
    body = fields.Str(required=True)
12

13
class Notify(AuthResource):
14 15
    clients = None
    schema = None
16

17
    def __init__(self):
18
        super().__init__()
19
        self.schema = NotifySchema()
20
   
21
    def post(self):
22 23
        args = request.get_json()
        errors = self.schema.validate(args)
24
        if errors:
25
            abort(400, message=str(errors))
26

27
        allow = False
28
        body = args.get("body")
29 30 31 32
        message = {
            'topic': 'broadcast',
            'message': body,
        }
33

34 35
        allow = self.auth(request)
        
36
        if allow:
37
            notify_queue = self.client['client_id'] + "-broadcast"
38
            write_to_queue(queue_name=notify_queue, msg=json.dumps(message))