Source code for pyrs.resource.response

import inspect

from pyrs import schema

from . import lib


[docs]class Response(object): """Generic response class""" def __init__(self, content, app=None, opts=None, request=None): self.content = content self.app = app or lib.get_config() self.opts = opts or {} self.request = request self.setup()
[docs] def setup(self): self.processor = self.opts.get( self.app['option_response_name'] ) if inspect.isclass(self.processor): self.processor = self.processor() self.status = self.opts.get( self.app['option_status_name'], self.app['option_status'] ) self.headers = self.opts.get( self.app['option_headers_name'], {} )
[docs] def build(self): status = self.status headers = self.headers.copy() content = self.content if isinstance(content, tuple): if len(content) == 3: content, status, headers_update = content headers.update(headers_update) if len(content) == 2 and isinstance(content[1], int): content, status = content if len(content) == 2 and isinstance(content[1], dict): content, headers_update = content headers.update(headers_update) if isinstance(self.processor, schema.Schema): headers['Content-Type'] = 'application/json' content = self.processor.dump(content) return (content, status, headers) if callable(self.processor): return self.processor(content, status, headers) return (content, status, headers)