receive.py 860 Bytes
Newer Older
1
from flask_restful import abort, request
2
from marshmallow import Schema, fields
3

4
from endpoints.auth_resource import AuthResource
5
from rmq import read_from_queue
6 7


8
class ReceiveQuerySchema(Schema):
9 10 11
    max_messages = fields.Int(required=False)


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

    def __init__(self):
17
        super().__init__()
18
        self.schema = ReceiveQuerySchema()
19 20 21 22

    def get(self):
        errors = self.schema.validate(request.args)
        if errors:
23
            abort(400, message=str(errors))
24

25 26
        # force query string parameter value into int
        max_messages = int(request.args.get("max_messages", 10))
27

28 29
        allow = self.auth(request)
        if allow:
30 31
            inbox_queue = self.client["client_id"] + "-inbox"
            return read_from_queue(queue_name=inbox_queue, max_msgs=max_messages)