def create_app(loop, settings: Settings=None):
settings = settings or Settings()
setup_logging(settings)
app = Application(
client_max_size=1024**2*100,
middlewares=(stats_middleware, ErrorLoggingMiddleware().middleware)
)
aiohttp_jinja2.setup(
app,
loader=jinja2.FileSystemLoader(str(THIS_DIR / 'templates')),
autoescape=jinja2.select_autoescape(['html', 'xml', 'jinja']),
)
app.update(
settings=settings,
sender=settings.sender_cls(settings=settings, loop=loop),
es=ElasticSearch(settings=settings, loop=loop),
mandrill_webhook_url=f'https://{settings.host_name}/webhook/mandrill/',
mandrill=Mandrill(settings=settings, loop=loop),
webhook_auth_key=None,
morpheus_api=MorpheusUserApi(settings=settings, loop=loop),
stats_request_count='request-stats-count',
stats_request_list='request-stats-list',
)
app.on_startup.append(app_startup)
app.on_cleanup.append(app_cleanup)
app.router.add_get('/', index, name='index')
app.router.add_get('/l{token}{_:/?}', ClickRedirectView.view(), name='click-redirect')
app.router.add_post('/send/email/', EmailSendView.view(), name='send-emails')
app.router.add_post('/send/sms/', SmsSendView.view(), name='send-smss')
app.router.add_get('/validate/sms/', SmsValidateView.view(), name='validate-smss')
methods = '/{method:%s}/' % '|'.join(m.value for m in SendMethod)
app.router.add_post('/create-subaccount' + methods, CreateSubaccountView.view(), name='create-subaccount')
app.router.add_post('/webhook/test/', TestWebhookView.view(), name='webhook-test')
app.router.add_head('/webhook/mandrill/', index, name='webhook-mandrill-head')
app.router.add_post('/webhook/mandrill/', MandrillWebhookView.view(), name='webhook-mandrill')
app.router.add_get('/webhook/messagebird/', MessageBirdWebhookView.view(), name='webhook-messagebird')
app.router.add_get('/user' + methods + 'messages.json', UserMessagesJsonView.view(), name='user-messages')
app.router.add_get('/user' + methods + 'message/{id}.html', UserMessageDetailView.view(), name='user-message-get')
app.router.add_get('/user' + methods + 'messages.html', UserMessageListView.view(), name='user-message-list')
app.router.add_get('/user' + methods + 'aggregation.json', UserAggregationView.view(), name='user-aggregation')
app.router.add_get('/user' + methods + '{id}/preview/', UserMessagePreviewView.view(), name='user-preview')
app.router.add_get('/admin/', AdminAggregatedView.view(), name='admin')
app.router.add_get('/admin/list/', AdminListView.view(), name='admin-list')
app.router.add_get('/admin/get/{method}/{id}/', AdminGetView.view(), name='admin-get')
app.router.add_get('/stats/requests/', RequestStatsView.view(), name='request-stats')
app.router.add_get('/stats/messages/', MessageStatsView.view(), name='message-stats')
app.router.add_static('/', str(THIS_DIR / 'static'))
return app
评论列表
文章目录