Il client in linguaggio Python dovrebbe in teoria simulare il ricevitore del Beacon e inoltrare le richieste all’API di “rilevazione” come descritto nel codice precedente. Vediamo, quale codice possiamo usare e come usarlo.
Ecco il codice in Python che simula il ricevitore Bluetooth.
import requests
import jwt
import datetime
# URL dell'endpoint del server
API_URL = "http://localhost:3000/rilevazione"
# Chiave segreta per firmare il token (deve corrispondere a quella del server)
SECRET_KEY = "23829382839283@@__woeiowieL"
# Creazione del token JWT
payload = {
"id": "12345", # ID dell'utente o qualsiasi altro dato che vuoi includere nel token
"exp": datetime.datetime.utcnow() + datetime.timedelta(hours=1) # Token scade dopo 1 ora
}
token = jwt.encode(payload, SECRET_KEY, algorithm="HS256")
# Dati da inviare all'API
data = {
"idUnivoco": "ID_BEACON_12345",
"dataRilevazione": "2023-10-05T10:00:00Z" # Ad esempio, puoi anche generare la data corrente
}
# Headers della richiesta
headers = {
"Authorization": f"Bearer {token.decode('utf-8')}",
"Content-Type": "application/json"
}
# Invio della richiesta POST
response = requests.post(API_URL, json=data, headers=headers)
# Stampa della risposta
print(response.json())
Le prime tre righe importano i moduli Requests, JWT, e Datetime. Se non li avete installati fatelo con il seguente comando: “pip install requests PyJWT.” da ambiente di programmazione. Se non l’ho detto prima, io utilizzo normalmente Visual Studio Code come Editor.
Nella sesta riga la variabile “API_URL” è l’endpoint HTTP.
Nella riga nove viene valorizzata la variabile “SECRET_KEY” che server per firmare il token e corrisponde a quella del server (come già detto, utilizzo questa soluzione in questa simulazione).
Dalla riga undici alla riga sedici viene creato il token JWT. A differenza dell’esempio precedente qui viene inclusa anche una scadenza del token inserita nella variabile “exp“.
Nelle righe diciotto alla ventidue vengono generati i dati simulati (come se il sensore avesse rilevato il Beacon) da inviare all’API di rilevazione.
Nelle righe dalla ventiquattro alla ventotto viene costruito l’headers della richiesta.
Nella riga trentuno viene inviata in POST la rilevazione fittizia del sensore. I parametri passati sono l’API_URL che abbiamo definito precedentemente, i dati della rilevazione del sensore attribuiti alla variabile “json” e infine la variabile “headers” contenente il token.