Parcourir la source

server: introduce ApiServer class which subclasses HTTPServer

Helge Jung il y a 9 ans
Parent
commit
7184ecf5e7
1 fichiers modifiés avec 15 ajouts et 6 suppressions
  1. 15 6
      ffstatus/server.py

+ 15 - 6
ffstatus/server.py

@@ -9,8 +9,6 @@ import json
 import re
 
 class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
-	storage = Storage()
-
 	def do_GET(self):
 		url = self.path
 
@@ -31,6 +29,8 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
 		self.send_header('Expires', '0')
 
 	def respond_index(self):
+		storage = self.server.storage
+
 		self.send_response(200)
 		self.send_header('Content-Type', 'text/html; charset=utf-8')
 		self.send_nocache_headers()
@@ -46,7 +46,7 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
 
 		self.wfile.write('<H2>Status</H2>\n')
 		self.wfile.write('Daten: <span id="datacount" class="value">')
-		self.wfile.write(len(self.storage.data))
+		self.wfile.write(len(storage.data))
 		self.wfile.write('</span>\n')
 
 		self.wfile.write('<H2>API</H2>\n')
@@ -58,6 +58,8 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
 		self.wfile.write('</body></html>')
 	
 	def respond_node(self, nodeid):
+		storage = self.server.storage
+
 		if nodeid == 'ff00ff00ff00':
 			self.send_response(200)
 			self.send_header('Content-Type', 'text/json')
@@ -70,7 +72,7 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
 			}))
 			return
 
-		if not nodeid in self.storage.data:
+		if not nodeid in storage.data:
 			self.send_error(404, 'No node with id \'' + nodeid + '\' present.')
 			return
 
@@ -78,9 +80,16 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
 		self.send_headers('Content-Type', 'text/json')
 		self.send_nocache_headers()
 		self.end_headers()
-		self.wfile.write(json.dumps(self.storage.data[nodeid]))
+		self.wfile.write(json.dumps(storage.data[nodeid]))
+
+class ApiServer(HTTPServer):
+	def __init__(self, endpoint, storage):
+		HTTPServer.__init__(self, endpoint, BatcaveHttpRequestHandler)
+		self.storage = storage
 
 if __name__ == '__main__':
-	server = HTTPServer(('localhost', 8888), BatcaveHttpRequestHandler)
+	dummystorage = Storage()
+	server = ApiServer(('0.0.0.0', 8888), dummystorage)
+
 	print("Server:", str(server))
 	server.serve_forever()