Files
harbour-aira/src/airajson.h
T

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