send.py 975 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 8
from rmq import write_to_queue

9

10 11 12
class SendSchema(Schema):
    body = fields.Str(required=True)
    topic = fields.Str(required=True)
13

14
class Send(AuthResource):
15 16
    clients = None
    schema = None
17

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

28 29
        allow = self.auth(request)
        
30
        if allow:
31 32 33
            body = args.get("body")
            topic = args.get("topic")
            outbox_queue = self.client['client_id'] + "-outbox"
34 35 36 37
            message = {
                'topic': topic,
                'message': body,
            }
38 39

            write_to_queue(queue_name=outbox_queue, msg=json.dumps(message))