Add endpoints for retrieving most recent events

This commit is contained in:
Tobias Eidelpes 2021-06-10 21:32:30 +02:00
parent d362f188a2
commit 1bed201f21
2 changed files with 24 additions and 4 deletions

View File

@ -28,10 +28,25 @@ class EventLogger:
def get_keys(self):
return json.dumps([key.decode() for key in self.redis.keys()])
def get_value_of(self, key):
key = self.redis.get(key)
def get_list_of(self, key):
"""
Returns a list of all elements inside a key. Most recent elements are stored first.
@param key: DAF:<VIN> or TV:<VIN> for either DAF events or TV events
"""
key = self.redis.lrange(key, 0, -1)
return key.decode() if key else json.dumps("")
def get_index_of(self, key, index):
"""
Returns element matching index in key. Most recent elements are stored first.
@param key: DAF:<VIN> or TV:<VIN> for either DAF events or TV events
@param index: 0 for most recent
"""
key = self.redis.lindex(key, index)
return key.decode() if key else json.dump("")
def log(self, msg):
try:
msg = pickle.loads(msg)
@ -59,6 +74,6 @@ class EventLogger:
to_log = str(msg)
if self.log_to_redis:
self.redis.append(key, "{}<br>".format(to_log))
self.redis.lpush(key, "{}".format(to_log))
if self.verbose:
print(to_log)

View File

@ -42,7 +42,12 @@ def api_get_keys():
@app.route("/api/keys/<key>/")
def api_get_of_key(key):
return el.get_value_of(key)
return el.get_list_of(key)
@app.route("api/keys/<key>/<index>")
def api_get_index_of_key(key, index):
return el.get_index_of(key, index)
if __name__ == '__main__':