Exemple #1
0
def create_app(settings_obj=None) -> web.Application:
    """App factory. Sets up routes and all plugins.

    :param settings_obj: Object containing optional configuration overrides. May be
        a Python module or class with uppercased variables.
    """
    config = Config()
    config.from_object(settings)
    if settings_obj:  # Update with overrides
        config.from_object(settings_obj)
    app = web.Application(debug=config.DEBUG)
    # Store uppercased configuration variables on app
    app.update(config)

    # Set up routes
    routes.setup(app)
    # Set up cache
    cache.setup(app)
    # Use content negotiation middleware to render JSON responses
    negotiation.setup(app)
    # Normalize paths: https://aiohttp-utils.readthedocs.org/en/latest/modules/path_norm.html
    path_norm.setup(app)
    # Set up Github client
    github_plugin.setup(app)

    return app
Exemple #2
0
 def __init__(self, *args, **kwargs):
     super(GameApplication, self).__init__(*args, **kwargs)
     negotiation.setup(self)
     aiohttp_jinja2.setup(
         self, loader=jinja2.FileSystemLoader('/vagrant/templates/'))
     self.setup_routes()
     path_norm.setup(self)
     self.game = Game(self)
def configure_app(app, overrides=None, setup=False):
    overrides = overrides or {}
    add_routes(app)

    if setup:
        path_norm.setup(app, **overrides)
    else:
        middleware = path_norm.normalize_path_middleware(**overrides)
        app.middlewares.append(middleware)
    def test_configuration_through_app_key(self, app, client):
        add_routes(app)
        app[CONFIG_KEY] = {
            'APPEND_SLASH': False
        }

        path_norm.setup(app)
        res = client.get('/articles', expect_errors=True)
        assert res.status_code == 404
Exemple #5
0
def setup_routes(app):
    # test routes
    app.router.add_route('GET', '/hello', views.hello)
    app.router.add_route('GET', '/version', views.version)
    app.router.add_route('GET', '/user/{id:[0-9a-fA-F]{32}}', views.get_user)
    app.router.add_route('POST', '/validate_profile', views.profile_validation)

    negotiation.setup(app,
                      renderers=OrderedDict([('application/json', JSONRender())
                                             ]))
    path_norm.setup(app, merge_slashes=True)
Exemple #6
0

class HelloResource():
    async def get(self, request):
        name = request.GET.get('name', 'World')
        return response({'message': 'Hello' + name})


with routing.add_route_context(app) as route:
    route('GET', '/', index)

# app.router.add_resource_object('/', HelloResource())

# Content negotiation
# negotiation.setup(
#     app, renderers={
#         'application/json': negotiation.render_json
#     }
# )

path_norm.setup(app)

if __name__ == '__main__':
    # Development server
    run(
        app,
        # app_uri='main:app',
        # reload=True,
        port=8000,
        host='0.0.0.0')
@coroutine
def index(request):
    return Response('Welcome!')

class HelloResource:

    @coroutine
    def get(self, request):
        return Response({
            'message': 'Welcome to the API!'
        })


with routing.add_route_context(app) as route:
    route('GET', '/', index)

with routing.add_resource_context(app, url_prefix='/api/') as route:
    route('/', HelloResource())

negotiation.setup(app)
path_norm.setup(app)

if __name__ == "__main__":
    run(
        app,
        app_uri="examples.kitchen_sink:app",
        reload=True,
        port=8000
    )