Source code for bukuserver.response

from typing import Any, Dict
from enum import Enum
from http import HTTPStatus
from flask import jsonify

OK, FAIL = 0, 1


[docs] class Response(Enum): SUCCESS = (HTTPStatus.OK, "Success.") # 200 FAILURE = (HTTPStatus.CONFLICT, "Failure.") # 409 REMOVED = (HTTPStatus.GONE, "Functionality no longer available.") # 410 INVALID_REQUEST = (HTTPStatus.BAD_REQUEST, "Ill-formed request.") # 400 INPUT_NOT_VALID = (HTTPStatus.UNPROCESSABLE_ENTITY, "Input data not valid.") # 422 TAG_NOT_VALID = (HTTPStatus.UNPROCESSABLE_ENTITY, "Invalid tag.") # 422 BOOKMARK_NOT_FOUND = (HTTPStatus.NOT_FOUND, "Bookmark not found.") # 404 RANGE_NOT_VALID = (HTTPStatus.NOT_FOUND, "Range not valid.") # 404 TAG_NOT_FOUND = (HTTPStatus.NOT_FOUND, "Tag not found.") # 404
[docs] @staticmethod def invalid(errors): return Response.INPUT_NOT_VALID(data={'errors': errors})
[docs] @staticmethod def from_flag(flag: bool, *, data: Dict[str, Any] = None, errors: Dict[str, Any] = None): errors = dict(({'errors': errors} if errors else {}), **(data or {})) return Response.SUCCESS(data=data) if flag else Response.FAILURE(data=errors)
@property def status_code(self) -> int: return self.value[0].value @property def message(self) -> str: return self.value[1] @property def status(self) -> int: return OK if self.status_code == HTTPStatus.OK.value else FAIL
[docs] def json(self, data: Dict[str, Any] = None) -> Dict[str, Any]: return dict(status=self.status, message=self.message, **data or {}) # pylint: disable=R1735
def __call__(self, *, data: Dict[str, Any] = None): """Generates a tuple in the form (response, status, headers) If passed, data is added to the response's JSON. """ return (jsonify(self.json(data)), self.status_code, {'ContentType': 'application/json'})