11#!/usr/bin/python3
22from abc import ABC
3+ from typing import Any
34
45import tornado .ioloop
56import tornado .web
2122
2223startup_timestamp = datetime .now ()
2324
25+ class BaseCORSHandler (tornado .web .RequestHandler ):
26+ def set_default_headers (self ):
27+ self .set_header ("Access-Control-Allow-Origin" , "*" )
28+ self .set_header ("Access-Control-Allow-Headers" , "x-requested-with, content-type" )
29+ self .set_header ("Access-Control-Allow-Methods" , "GET, POST, PUT, DELETE, OPTIONS" )
30+
31+ def options (self , * args , ** kwargs ):
32+ self .set_default_headers ()
33+ self .set_status (204 )
34+ self .finish ()
35+
36+ def write_error (self , status_code : int , ** kwargs : Any ) -> None :
37+ self .set_default_headers ()
38+ super ().write_error (status_code , ** kwargs )
39+
2440
2541class HealthHandler (tornado .web .RequestHandler , ABC ):
2642 # noinspection PyAttributeOutsideInit
@@ -74,17 +90,17 @@ def get(self):
7490 self .finish ()
7591
7692
77- class SpaceAPIHandler (tornado . web . RequestHandler , ABC ):
93+ class SpaceAPIHandler (BaseCORSHandler , ABC ):
7894 # noinspection PyAttributeOutsideInit
7995 def initialize (self , observer ):
8096 self .observer = observer
8197
8298 def get (self ):
83- self .set_header ("Content-Type" , "application/json" )
99+ self .set_header ("Content-Type" , "application/json; charset=utf-8 " )
84100 self .write (json .dumps (self .observer .get_space_api_entry (), indent = 4 ))
85101 self .finish ()
86102
87- class SpaceStateTextHandler (tornado . web . RequestHandler , ABC ):
103+ class SpaceStateTextHandler (BaseCORSHandler , ABC ):
88104 # noinspection PyAttributeOutsideInit
89105 def initialize (self , observer ):
90106 self .observer = observer
@@ -95,7 +111,7 @@ def get(self):
95111 self .finish ()
96112
97113
98- class PictureHandler (tornado . web . RequestHandler , ABC ):
114+ class PictureHandler (BaseCORSHandler , ABC ):
99115 # noinspection PyAttributeOutsideInit
100116 def initialize (self , picture_manager ):
101117 self .picture_manager = picture_manager
0 commit comments