Source code for jivago.wsgi.filter.system_filters.body_serialization_filter

from jivago.lang.annotations import Inject, Serializable
from jivago.lang.registry import Registry
from jivago.serialization.serializer import Serializer
from jivago.wsgi.filter.filter import Filter
from jivago.wsgi.filter.filter_chain import FilterChain
from jivago.wsgi.request.request import Request
from jivago.wsgi.request.response import Response

TYPES_TO_BE_SERIALIZED = (dict, list)


[docs] class BodySerializationFilter(Filter): @Inject def __init__(self, serializer: Serializer, registry: Registry): self.registry = registry self.serializer = serializer
[docs] def doFilter(self, request: Request, response: Response, chain: FilterChain): chain.doFilter(request, response) if self.registry.is_annotated(response.body.__class__, Serializable) or type(response.body) in TYPES_TO_BE_SERIALIZED: response.body = self.serializer.serialize(response.body)