def get_wsgi_application(self):
def create_response(environ, start_response, status=200):
from webob import Response
res = Response(
content_type='application/json',
body='{}',
status=status
)
return res(environ, start_response)
def application(environ, start_response):
import json
from webob import Request
request = Request(environ)
# Check HMAC-SHA256
if not self.is_valid_sign(request.body, request.headers.get('X-Line-Signature')):
return create_response(environ, start_response, 403)
# Check Handler
if not self.handler:
return create_response(environ, start_response, 501)
# Parse Event
try:
obj = json.loads(request.body.decode('utf-8'))
from .parse import event_parser
events = [event_parser(event_json, self.channel) for event_json in obj['events']]
except:
return create_response(environ, start_response, 400)
# Call Event Handler
for event in events:
self.handler(event)
return create_response(environ, start_response)
return application
评论列表
文章目录