Browse Source

/node/<id>(.json|/<field>) supports ?search_aliases=1

The requester can now disable alias searches, if necessary.
Helge Jung 9 years ago
parent
commit
5ad6c8c9b5
1 changed files with 13 additions and 6 deletions
  1. 13 6
      ffstatus/server.py

+ 13 - 6
ffstatus/server.py

@@ -129,9 +129,9 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
             cmd = match.group('cmd')
             nodeid = match.group('id').lower()
             if cmd == '.json':
-                self.__respond_node(nodeid)
+                self.__respond_node(nodeid, query)
             else:
-                self.__respond_nodedetail(nodeid, cmd[1:])
+                self.__respond_nodedetail(nodeid, cmd[1:], query)
             return
 
         # /status - overall status (incl. node and client count)
@@ -372,11 +372,13 @@ angesprochen und sollte aus einer Mehrzahl von Gr&uuml;nden nicht
                             extra={'Content-Disposition': 'inline'})
         self.wfile.write(json.dumps(result, indent=indent))
 
-    def __respond_node(self, rawid):
+    def __respond_node(self, rawid, query):
         """Display node data."""
 
+        use_aliases = query.get('search_aliases', '1') != '0'
+
         # search node by the given id
-        node = self.server.storage.find_node(rawid)
+        node = self.server.storage.find_node(rawid, search_aliases=use_aliases)
 
         # handle unknown nodes
         if node is None:
@@ -524,14 +526,19 @@ angesprochen und sollte aus einer Mehrzahl von Gr&uuml;nden nicht
 
         self.wfile.write(json.dumps(answers))
 
-    def __respond_nodedetail(self, nodeid, field):
+    def __respond_nodedetail(self, nodeid, field, query):
         """
         Return a field from the given node.
         String and integers are returned as text/plain,
         all other as JSON.
         """
 
-        node = self.server.storage.find_node(nodeid, include_raw_data=True)
+        use_aliases = query.get('search_aliases', 1) != 0
+
+        # search node by given id
+        node = self.server.storage.find_node(nodeid,
+                                             include_raw_data=True,
+                                             search_aliases=use_aliases)
         if node is None:
             self.send_error(404, 'No node with id \'' + nodeid + '\' present.')
             return