def swagger_handlers():
- prefix = settings.default_settings.get('swagger_prefix', '/swagger')
+ prefix = settings.docs_settings.get('swagger_prefix', '/swagger')
if prefix[-1] != '/':
prefix += '/'
tornado.web.URLSpec(
_path(r'spec.html$'),
views.SwaggerUIHandler,
- settings.default_settings,
- name=settings.SWAGGER_API_DOCS),
+ settings.docs_settings,
+ name=settings.API_DOCS_NAME),
tornado.web.URLSpec(
_path(r'resources.json$'),
views.SwaggerResourcesHandler,
- settings.default_settings,
- name=settings.SWAGGER_RESOURCE_LISTING),
+ settings.docs_settings,
+ name=settings.RESOURCE_LISTING_NAME),
tornado.web.URLSpec(
_path(r'APIs$'),
views.SwaggerApiHandler,
- settings.default_settings,
- name=settings.SWAGGER_API_DECLARATION),
+ settings.docs_settings,
+ name=settings.API_DECLARATION_NAME),
(
_path(r'(.*\.(css|png|gif|js))'),
tornado.web.StaticFileHandler,
- {'path': settings.default_settings.get('static_path')}),
+ {'path': settings.docs_settings.get('static_path')}),
]
##############################################################################
import os.path
-SWAGGER_VERSION = '1.2'
-SWAGGER_API_DOCS = 'swagger-api-docs'
-SWAGGER_RESOURCE_LISTING = 'swagger-resource-listing'
-SWAGGER_API_DECLARATION = 'swagger-api-declaration'
+API_DOCS_NAME = 'swagger-api-docs'
+RESOURCE_LISTING_NAME = 'swagger-resource-listing'
+API_DECLARATION_NAME = 'swagger-api-declaration'
STATIC_PATH = os.path.join(os.path.dirname(os.path.normpath(__file__)),
'static')
-default_settings = {
+docs_settings = {
'base_url': '',
'static_path': STATIC_PATH,
'swagger_prefix': '/swagger',
'api_version': 'v1.0',
+ 'swagger_version': '1.2',
'api_key': '',
'enabled_methods': ['get', 'post', 'put', 'patch', 'delete'],
'exclude_namespaces': [],
}
models = []
-
-
-def basePath():
- return default_settings.get('base_url')
def json_dumps(obj, pretty=False):
- return json.dumps(obj, sort_keys=True, indent=4, separators=(',', ': ')) \
- if pretty else json.dumps(obj)
+ return json.dumps(obj,
+ sort_keys=True,
+ indent=4,
+ separators=(',', ': ')) if pretty else json.dumps(obj)
class SwaggerUIHandler(tornado.web.RequestHandler):
- def initialize(self, static_path, **kwds):
- self.static_path = static_path
+ def initialize(self, **kwargs):
+ self.static_path = kwargs.get('static_path')
+ self.base_url = kwargs.get('base_url')
def get_template_path(self):
return self.static_path
def get(self):
discovery_url = os.path.join(
- settings.basePath(),
- self.reverse_url(settings.SWAGGER_RESOURCE_LISTING))
+ self.base_url,
+ self.reverse_url(settings.RESOURCE_LISTING_NAME))
self.render('index.html', discovery_url=discovery_url)
class SwaggerResourcesHandler(tornado.web.RequestHandler):
- def initialize(self, api_version, exclude_namespaces, **kwds):
- self.api_version = api_version
- self.exclude_namespaces = exclude_namespaces
+ def initialize(self, **kwargs):
+ self.api_version = kwargs.get('api_version')
+ self.swagger_version = kwargs.get('swagger_version')
+ self.base_url = kwargs.get('base_url')
+ self.exclude_namespaces = kwargs.get('exclude_namespaces')
def get(self):
self.set_header('content-type', 'application/json')
resources = {
'apiVersion': self.api_version,
- 'swaggerVersion': settings.SWAGGER_VERSION,
- 'basePath': settings.basePath(),
+ 'swaggerVersion': self.swagger_version,
+ 'basePath': self.base_url,
'produces': ["application/json"],
'description': 'Test Api Spec',
'apis': [{
- 'path': self.reverse_url(settings.SWAGGER_API_DECLARATION),
+ 'path': self.reverse_url(settings.API_DECLARATION_NAME),
'description': 'Test Api Spec'
}]
}
class SwaggerApiHandler(tornado.web.RequestHandler):
- def initialize(self, api_version, base_url, **kwds):
- self.api_version = api_version
- self.base_url = base_url
+ def initialize(self, **kwargs):
+ self.api_version = kwargs.get('api_version')
+ self.swagger_version = kwargs.get('swagger_version')
+ self.base_url = kwargs.get('base_url')
def get(self):
self.set_header('content-type', 'application/json')
specs = {
'apiVersion': self.api_version,
- 'swaggerVersion': settings.SWAGGER_VERSION,
- 'basePath': settings.basePath(),
+ 'swaggerVersion': self.swagger_version,
+ 'basePath': self.base_url,
'apis': [self.__get_api_spec__(path, spec, operations)
for path, spec, operations in apis],
'models': self.__get_models_spec(settings.models)