Example #1
0
 def get_responses(self, view, parent=None):
     ret = resolve_annotations(parent, getattr(view, '__schemas__'))
     predicate = lambda key, value: not(
         hasattr(key, 'startswith') and
         key.startswith('_')
     )
     return filter_recursive(ret, predicate)
Example #2
0
    def wrapped(*args, **kwargs):
        config = flask.current_app.config
        parser = config.get('SMORE_WEBARGS_PARSER', flaskparser.parser)
        format_response = config.get('SMORE_FORMAT_RESPONSE', flask.jsonify) or identity

        obj = args[0] if func.__meta__.get('ismethod') else None
        __args__ = resolve_annotations(obj, getattr(func, '__args__'))
        __schemas__ = resolve_annotations(obj, getattr(func, '__schemas__'))
        if __args__.get('_apply', True):
            kwargs.update(parser.parse(__args__.get('args', {})))
        response = func(*args, **kwargs)
        if isinstance(response, werkzeug.Response):
            return response
        unpacked = unpack(response)
        status_code = unpacked[1] or http.OK
        schema = __schemas__.get(status_code, __schemas__.get('default'))
        if schema and __schemas__.get('_apply', True):
            schema = resolve_instance(schema['schema'])
            output = schema.dump(unpacked[0]).data
        else:
            output = unpacked[0]
        return format_output((format_response(output), ) + unpacked[1:])
Example #3
0
 def get_parameters(self, rule, view, docs, parent=None):
     __args__ = resolve_annotations(parent, getattr(view, '__args__'))
     return swagger.args2parameters(
         __args__.get('args', {}),
         default_in=__args__.get('default_in'),
     ) + rule_to_params(rule, docs.get('params'))