|
@@ -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)
|