Files
thermometer-server/src/api/node.py
2022-08-08 22:06:51 +01:00

63 lines
1.6 KiB
Python

from flask import abort, request
from time import time
class Node:
def __init__(self, id: int, name: str):
self.id = id
self.name = name
self.temperature_readings = []
self.humidity_readings = []
def add_temperature_reading(self, temperature: float):
self.temperature_readings.append((temperature, time()))
def add_humidity_reading(self, humidity: float):
self.humidity_readings.append((humidity, time()))
def get_temperature_readings(self) -> list[tuple[float, float]]:
return self.temperature_readings
def get_humidity_readings(self)-> list[tuple[float, float]]:
return self.humidity_readings
def get_name(self) -> str:
return self.name
def set_name(self, name: str):
self.name = name
def node_register(request: request, state: dict) -> str:
state["max_id"] += 1
id = state["max_id"]
request_json = request.get_json()
name = request_json.get("name")
if name is None:
name = request.remote_addr
state["nodes"][f"{id}"] = Node(id, name)
return f"{id}"
def node_reading(id: int, request: request, state: dict) -> str:
node = state["nodes"].get(f"{id}")
if node is None:
abort(403)
request_json = request.get_json()
temperature = request_json.get("temperature")
humidity = request_json.get("humidity")
if temperature is None and humidity is None:
abort(400)
if temperature is not None:
node.add_temperature_reading(temperature)
if humidity is not None:
node.add_humidity_reading(humidity)
return "OK"