def build()

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