Source code for anza.adapters.flask
"""Flask responses for pages and envelopes."""
from typing import Any
from ..models.document import Document
from ..models.envelope import Envelope
[docs]
def html_response(doc: Document, status_code: int = 200) -> Any:
"""Wrap a rendered page in an HTML response.
Args:
doc: The page from :class:`~anza.Page`.
status_code: The HTTP status.
Returns:
A ``flask.Response`` with ``text/html``; the bare HTML string when
Flask is not installed.
"""
try:
from flask import Response
return Response(doc.html, status=status_code, mimetype="text/html")
except ImportError:
return doc.html
[docs]
def json_response(envelope: Envelope, status_code: int = 200) -> Any:
"""Wrap a fragment envelope in a JSON response.
Args:
envelope: The envelope from :class:`~anza.Fragment`.
status_code: The HTTP status.
Returns:
A ``flask.jsonify`` response of :meth:`Envelope.to_dict()
<anza.Envelope.to_dict>`; the bare dict when Flask is not installed.
"""
try:
from flask import jsonify
resp = jsonify(envelope.to_dict())
resp.status_code = status_code
return resp
except ImportError:
return envelope.to_dict()