1515
1616import json
1717
18+ from src .SpaceApiEntry import SpaceApiEntry
19+ from src .SpaceStatusObserver import SpaceStatusObserver
1820
1921startup_timestamp = datetime .now ()
2022
@@ -71,11 +73,23 @@ def get(self):
7173 self .finish ()
7274
7375
74- def make_app ():
76+ class SpaceAPIHandler (tornado .web .RequestHandler , ABC ):
77+ # noinspection PyAttributeOutsideInit
78+ def initialize (self , observer ):
79+ self .observer = observer
80+
81+ def get (self ):
82+ self .set_header ("Content-Type" , "application/json" )
83+ self .write (json .dumps (self .observer .get_space_api_entry (), indent = 4 ))
84+ self .finish ()
85+
86+
87+ def make_app (observer ):
7588 version_path = r"/v[0-9]"
7689 return tornado .web .Application ([
7790 (version_path + r"/health" , HealthHandler ),
7891 (version_path + r"/oas3" , Oas3Handler ),
92+ (r"/" , SpaceAPIHandler , dict (observer = observer )),
7993 ])
8094
8195
@@ -91,10 +105,23 @@ def load_env(key, default):
91105
92106def main ():
93107 arg_port = load_env ('PORT' , 8080 )
108+ arg_mqtt_broker_server = load_env ('MQTT_BROKER' , 'mqtt' )
109+ arg_mqtt_broker_port = load_env ('MQTT_PORT' , 1883 )
110+ arg_topic_status = load_env ('MQTT_TOPIC_STATUS' , 'status' )
111+ arg_topic_lastchange = load_env ('MQTT_TOPIC_LASTCHANGE' , 'lastchange' )
94112
95113 # Setup
96114
97- app = make_app ()
115+ observer = SpaceStatusObserver (
116+ broker = arg_mqtt_broker_server ,
117+ port = arg_mqtt_broker_port ,
118+ topic_status = arg_topic_status ,
119+ topic_lastchange = arg_topic_lastchange ,
120+ space_api_entry = SpaceApiEntry .create_netz39 ()
121+ )
122+ observer .start ()
123+
124+ app = make_app (observer )
98125 sockets = tornado .netutil .bind_sockets (arg_port , '' )
99126 server = tornado .httpserver .HTTPServer (app )
100127 server .add_sockets (sockets )
0 commit comments