send.py 965 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

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

19
    def __init__(self):
20
        super().__init__()
21
        self.schema = SendSchema()
22

23
    def post(self):
24 25
        args = request.get_json()
        errors = self.schema.validate(args)
26
        if errors:
27
            abort(400, message=str(errors))
28

29
        allow = self.auth(request)
30

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

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