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)
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:])
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'))