|
|
|
import json |
|
import tornado.web |
|
|
|
|
|
|
|
class ApiHandler(tornado.web.RequestHandler): |
|
def __init__(self, *args, **kwargs): |
|
super().__init__(*args, **kwargs) |
|
self.json_args = None |
|
|
|
def set_default_headers(self): |
|
|
|
if not self.application.settings['debug']: |
|
return |
|
self.set_header('Access-Control-Allow-Origin', '*') |
|
self.set_header('Access-Control-Allow-Methods', 'OPTIONS, PUT, POST, GET, DELETE') |
|
if 'Access-Control-Request-Headers' in self.request.headers: |
|
self.set_header('Access-Control-Allow-Headers', |
|
self.request.headers['Access-Control-Allow-Headers']) |
|
|
|
def prepare(self): |
|
if not self.request.headers.get('Content-Type', '').startswith('application/json'): |
|
return |
|
try: |
|
self.json_args = json.loads(self.request.body) |
|
except json.JSONDecodeError: |
|
pass |
|
|
|
async def options(self, *_args, **_kwargs): |
|
|
|
self.set_status(204 if self.application.settings['debug'] else 405) |
|
|