Selaa lähdekoodia

server: add /node/<id>.json

Helge Jung 9 vuotta sitten
vanhempi
commit
3306965f27
1 muutettua tiedostoa jossa 30 lisäystä ja 0 poistoa
  1. 30 0
      ffstatus/server.py

+ 30 - 0
ffstatus/server.py

@@ -4,7 +4,13 @@
 from __future__ import print_function
 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
 
+from storage import Storage
+import json
+import re
+
 class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
+	storage = Storage()
+
 	def do_GET(self):
 		url = self.path
 
@@ -12,6 +18,11 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
 			self.respond_index()
 			return
 
+		m = re.match(r'^/node/([a-f0-9]{12})\.json$', url)
+		if m != None:
+			self.respond_node(m.group(1))
+			return
+
 		self.send_error(404, 'The URL \'{0}\' was not found here.'.format(url))
 
 	def respond_index(self):
@@ -40,7 +51,26 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
 		self.wfile.write('</dl>\n')
 		self.wfile.write('</body></html>')
 	
+	def respond_node(self, nodeid):
+		if nodeid == 'ff00ff00ff00':
+			self.send_response(200)
+			self.send_header('Content-Type', 'text/json')
+			self.end_headers()
+			self.wfile.write(json.dumps({
+				'name': 'API-Example',
+				'nodeid': nodeid,
+				'META': 'Dies ist ein minimaler Beispiel-Datensatz. Herzlichen Glückwunsch, du hast das Prinzip der API kapiert.',
+			}))
+			return
 
+		if not nodeid in self.storage.data:
+			self.send_error(404, 'No node with id \'' + nodeid + '\' present.')
+			return
+
+		self.send_response(200)
+		self.send_headers('Content-Type', 'text/json')
+		self.end_headers()
+		self.wfile.write(json.dumps(self.storage.data[nodeid]))
 
 if __name__ == '__main__':
 	server = HTTPServer(('localhost', 8888), BatcaveHttpRequestHandler)