Skip to content

Commit 61b44fb

Browse files
committed
cleanup airtable plugin
1 parent 1f814e7 commit 61b44fb

3 files changed

Lines changed: 22 additions & 27 deletions

File tree

pybot/plugins/airtable/endpoints.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
async def incoming_request(request):
1010
airtable = request.app.plugins['airtable']
1111
payload = await request.json()
12-
logger.debug('Incoming event payload: %s', payload)
12+
logger.debug('Incoming Airtable event payload: %s', payload)
1313

1414
if payload['token'] != airtable.verify:
1515
return Response(status=401)

pybot/plugins/airtable/plugin.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import asyncio
22
import logging
33
import os
4+
from collections import defaultdict
45

56
from pybot.plugins.airtable import endpoints
67
from pybot.plugins.airtable.api import AirtableAPI
7-
from pybot.plugins.airtable.requests import RequestRouter
88

99
logger = logging.getLogger(__name__)
1010

@@ -33,8 +33,25 @@ def load(self, sirbot, api_key=None, base_key=None, verify=None):
3333

3434
sirbot.router.add_route('POST', '/airtable/request', endpoints.incoming_request)
3535

36-
def on_request(self, request, handler, wait=True):
36+
def on_request(self, request, handler, **kwargs):
3737
if not asyncio.iscoroutinefunction(handler):
3838
handler = asyncio.coroutine(handler)
39-
configuration = {'wait': wait}
40-
self.routers['request'].register(request, (handler, configuration))
39+
options = {**kwargs, 'wait': False}
40+
self.routers['request'].register(request, (handler, options))
41+
42+
43+
class RequestRouter:
44+
def __init__(self):
45+
self._routes = defaultdict(list)
46+
47+
def register(self, request_type, handler, **detail):
48+
logger.info("Registering %s, %s to %s", request_type, detail, handler)
49+
self._routes[request_type].append(handler)
50+
51+
def dispatch(self, request):
52+
logger.debug('Dispatching request "%s"', request.get("type"))
53+
if request["type"] in self._routes:
54+
for handler in self._routes.get(request['type']):
55+
yield handler
56+
else:
57+
return

pybot/plugins/airtable/requests.py

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)