Beispiel #1
0
def WSFailure(payload=None, detail=None):
    payload = payload or {}
    payload.update({
        'status': WS_STATUS.FAILURE,
        'detail': str(detail or "Request execution error."),
    })
    return json.dumps(payload)
Beispiel #2
0
    def __init__(
        self,
        payload: dict=None,
        detail: Any=None,
        pretty: bool=False,
        content_type: str='application/json',
        charset: str='utf-8',
        **kwargs
    ):
        payload = payload if payload is not None else {}

        detail = detail if detail is not None else self.detail
        if detail:
            payload['detail'] = str(detail)

        indent = 2 if pretty else None
        text = json.dumps(payload, indent=indent) + '\n'

        kwargs.setdefault('status', self.status)

        super().__init__(
            text=text,
            charset=charset,
            content_type=content_type,
            **kwargs
        )
    async def _try_handle_request(self, request: Msg) -> Awaitable[None]:
        LOG.debug(
            f"nats request (data={request.data}, subscriber='{request.reply}')"
        )

        try:
            result = await self._handle_message(request.data)
        except Exception as e:
            LOG.exception(
                f"failed to handle nats request (data={request.data})")
            response = dict(
                status=NATS_STATUS.FAILURE,
                details=(str(e) or e.__class__.__name__),
            )
        else:
            response = dict(
                status=NATS_STATUS.SUCCESS,
                payload=result,
            )

        if request.reply:
            try:
                data = json.dumps(response)
                data = data.encode()
                await self._nats_client.publish(request.reply, data)
            except Exception:
                LOG.exception(
                    f"failed to publish nats response (data={response})")
            else:
                LOG.debug(f"nats response (data={data})")
Beispiel #4
0
def WSSuccess(payload=None, detail=None):
    payload = payload or {}
    payload['status'] = WS_STATUS.SUCCESS

    if detail:
        payload['detail'] = str(detail)

    return json.dumps(payload)
Beispiel #5
0
 async def write(self, o: Any) -> Awaitable[None]:
     msg = json.dumps(o).encode()
     await self._queue.put(msg)
Beispiel #6
0
 async def write(self, o: Any) -> Awaitable[None]:
     s = json.dumps(o)
     await super().write(s)