Change ApiService to use the new swagger-backed discovery and the new /v1/ API endpoints. Also changes all other /api/ calls (the few that are still manually invoked)

This commit is contained in:
Joseph Schorr 2014-03-14 23:40:41 -04:00
parent 767ab1085a
commit e759066ae0
4 changed files with 87 additions and 79 deletions

View file

@ -29,7 +29,7 @@ def fully_qualified_name(method_view_class):
return '%s.%s' % (inst.__module__, inst.__class__.__name__)
def swagger_route_data(include_internal):
def swagger_route_data(include_internal=False, compact=False):
apis = []
models = {}
for rule in app.url_map.iter_rules():
@ -86,14 +86,19 @@ def swagger_route_data(include_internal):
new_operation = {
'method': method_name,
'nickname': method_metadata(method, 'nickname'),
'type': 'void',
'summary': method.__doc__ if method.__doc__ else '',
'parameters': parameters,
'nickname': method_metadata(method, 'nickname')
}
if not compact:
new_operation.update({
'type': 'void',
'summary': method.__doc__ if method.__doc__ else '',
'parameters': parameters,
})
scope = method_metadata(method, 'oauth2_scope')
if scope:
if scope and not compact:
new_operation['authorizations'] = {
'oauth2': [scope],
}
@ -123,7 +128,11 @@ def swagger_route_data(include_internal):
if not internal or (internal and include_internal):
apis.append(new_resource)
# If compact form was requested, simply return the APIs.
if compact:
return {'apis': apis}
swagger_data = {
'apiVersion': 'v1',
'swaggerVersion': '1.2',
@ -153,6 +162,7 @@ def swagger_route_data(include_internal):
'apis': apis,
'models': models,
}
return swagger_data
@resource('/v1/discovery')