Browse Source

server: extract get_nodestatus() from respond_nodestatus()

Helge Jung 9 years ago
parent
commit
b11373229b
1 changed files with 20 additions and 11 deletions
  1. 20 11
      ffstatus/server.py

+ 20 - 11
ffstatus/server.py

@@ -253,31 +253,40 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
 		self.send_headers('text/json')
 		self.wfile.write(json.dumps(node))
 
-	def respond_nodestatus(self, rawid):
-		"""Display node status."""
+	def get_nodestatus(self, rawid):
+		"""Determine node's status."""
 
 		# search node by the given id
 		node = self.find_node(rawid)
 
 		# handle unknown nodes
 		if node is None:
-			self.send_error(404, 'No node with id \'' + rawid + '\' present.')
-			return
-
-		self.send_headers('text/plain')
+			return None
 
+		# check that the last batadv update is noted in the data
 		updated = node[self.FIELDKEY_UPDATED] if self.FIELDKEY_UPDATED in node else None
 		if updated is None or not 'batadv' in updated:
-			self.wfile.write('unknown')
-			return
+			return 'unknown'
 
+		# make decision based on time of last batadv update
 		diff = time.time() - updated['batadv']
 		if diff < 150:
-			self.wfile.write('active')
+			return 'active'
 		elif diff < 300:
-			self.wfile.write('stale')
+			return 'stale'
 		else:
-			self.wfile.write('offline')
+			return 'offline'
+
+	def respond_nodestatus(self, rawid):
+		"""Display node status."""
+
+		status = self.get_nodestatus(rawid)
+
+		if status is None:
+			self.send_error(404, 'No node with id \'' + rawid + '\' present.')
+
+		self.send_headers('text/plain')
+		self.wfile.write(status)
 
 	def respond_nodeidmac2name(self, ids):
 		storage = self.server.storage