43 lines
1.5 KiB
C++
43 lines
1.5 KiB
C++
#ifndef AIRAJSON_H
|
|
#define AIRAJSON_H
|
|
|
|
// Funzioni PURE (solo QtCore, nessun QObject): sono la parte dell'app
|
|
// verificabile senza SDK, con l'harness locale in tests/core_test.cpp.
|
|
// Il bridge HTTP parla JSON; qui stanno normalizzazione dell'indirizzo,
|
|
// lettura del riassunto e costruzione del corpo dei comandi.
|
|
|
|
#include <QByteArray>
|
|
#include <QString>
|
|
#include <QVariant>
|
|
#include <QVariantMap>
|
|
|
|
namespace AiraJson {
|
|
|
|
// "192.168.2.15:8790" -> "http://192.168.2.15:8790"
|
|
// "" -> "" (nessun indirizzo: il client non fa richieste)
|
|
// toglie gli slash finali e gli spazi; preserva schema e porta espliciti.
|
|
QString normalizeBaseUrl(const QString &raw);
|
|
|
|
// Legge il corpo di GET /summary nel dizionario usato dalla UI.
|
|
// In caso di JSON non valido o di risposta di errore ritorna un dizionario
|
|
// vuoto e mette *ok a false.
|
|
QVariantMap parseSummary(const QByteArray &body, bool *ok);
|
|
|
|
// Codice di stato Aira ("OPERATING_STATUS_AUTO") in etichetta italiana.
|
|
QString modeLabel(const QString &operatingStatus);
|
|
|
|
// Temperatura leggibile: "51,0" oppure "—" se il valore manca.
|
|
QString formatValue(const QVariant &value);
|
|
|
|
// Corpo JSON per POST /command. value viene omesso se nullo (i comandi
|
|
// semplici non hanno parametri).
|
|
QByteArray commandPayload(const QString &id, const QVariant &value);
|
|
|
|
// Messaggio d'errore leggibile da una risposta del bridge
|
|
// ({"ok":false,"error":"..."}), con fallback sullo stato HTTP.
|
|
QString errorMessage(const QByteArray &body, int httpStatus);
|
|
|
|
} // namespace AiraJson
|
|
|
|
#endif // AIRAJSON_H
|