in modular_api/index.py [0:0]
def build(self) -> Callable:
"""
It returns a wsgi callable, not a Bottle instance
:return:
"""
_LOG.info('Building WSGI application')
child = Bottle()
self._register_errors(child)
if self._swagger:
child.route(
path='/swagger.json',
method=HTTPMethod.GET,
callback=swagger_spec,
name='swagger-spec'
)
child.route(
path=self._swagger_prefix,
method=HTTPMethod.GET,
callback=swagger_html
)
child.route(
path='/doc',
method=HTTPMethod.GET,
callback=web_help
)
child.route(
path='/doc<path:path>',
method=HTTPMethod.GET,
callback=generate_group_or_command_help
)
child.route(
path='/login',
method=HTTPMethod.GET,
callback=login
)
child.route(
path='/refresh',
method=HTTPMethod.POST,
callback=refresh
)
child.route(
path='/version',
method=HTTPMethod.GET,
callback=version
)
child.route(
path='/health_check',
method=HTTPMethod.GET,
callback=health_check
)
child.route(
path='/stats',
method=HTTPMethod.POST,
callback=stats
)
# TODO use some prefix for all commands, because this catches
# everything
child.route(
path='<path:path>',
method=[HTTPMethod.POST, HTTPMethod.GET],
callback=index
)
if self._prefix:
application = Bottle()
self._register_errors(application)
pr = f'/{self._prefix.strip("/")}/'
application.mount(pr, child)
else:
application = child
if self._env.is_rate_limiting_enabled():
_LOG.info('Enabling rate limiting')
application = self._rate_limited(application)
_LOG.info('WSGI application was built')
return application