Files
Telereview/code/backend_reconnaissance/network.py
2023-05-04 00:23:59 +02:00

60 lines
1.8 KiB
Python

import requests
import asyncio
import json
import os
import threading
import websockets
from dotenv import load_dotenv
load_dotenv()
class WebsocketServer(threading.Thread):
def __init__(self, onMessage, port=os.getenv("PORT"), host=os.getenv("HOST")):
threading.Thread.__init__(self)
self.host = host
self.port = port
self.messageQueue = []
self.onMessage = onMessage
def run(self):
print("server thread started")
asyncio.run(self.runServer())
async def runServer(self):
async with websockets.serve(self.handler, self.host, self.port):
await asyncio.Future()
async def handler(self,websocket):
while True:
for msg in self.messageQueue:
# print("sending", json.dumps(msg))
await websocket.send(json.dumps(msg))
self.messageQueue.pop(0)
await asyncio.sleep(0.01)
def sendMessage(self,message):
self.messageQueue.append(message)
class ApiClient():
def __init__(self, host=os.getenv("API_HOST"), port=os.getenv("API_PORT")):
self.host = host
self.port = port
def send(self,note,commentaire):
#Exemple ajout d'un commentaire depuis la borne (site ou geste)
avis = {
"note": note,
"source": "borne",
"commentaire":commentaire,
}
print(self.host, self.port)
return requests.post("http://"+self.host+":"+self.port+"/add_review", data=avis)
def get_criteria(self):
res = []
crits = json.loads(requests.get("http://"+self.host+":"+self.port+"/borne/get_criteres").text)
for c in crits:
res.append(c["nom"])
return res
print(ApiClient().get_criteria())