Buonasera a tutti,
innanzitutto vi ringrazio per i preziosissimi riscontri sia riguardo al codice sia riguardo al regolamento.
Tra un momento libero e l'altro sono già riuscito ad apportare alcune migliorie grazie ai feedback ricevuti da @cotestatnt.
Mi trovo in linea con l'idea di utilizzare l'ereditarietà per estendere le funzionalità di WiFiClient ed ho già iniziato ad allineare il codice di conseguenza.
Mi piacerebbe però approfondire il discorso sulla parametrizzazione della attuale funzione httpPost() e l'utilizzo della struttura PostParam.
In un contesto di scambio informazioni con un servizio remoto, lo schema e la natura dei dati trasmessi sono (e dovrebbero essere) sempre noti e ben definiti.
Sarà quindi sempre ammessa variazione in termini di valori, ma mai di struttura e tipo di dato.
L'approccio attuale spinge il programmatore ad essere "cosciente" non solo riguardo al dato ma anche alla sua forma.
Al costo di rendere leggermente meno "amichevole" il wrapper si guadagna però maggior controllo.
Ho aggiornato anche le demo sulla Repository ma riporto un piccolo estratto qui di seguito.
void post_request_demo()
{
int port = 80;
char server[] = "arduino-demo.requestcatcher.com";
if (!client.httpConnect(server, port))
return;
// Example...
// Sending some sort of coordinates via latitude (lat) and longitude (log) parameters to the server.
// Using 4 decimal to simulate ~10m GPS tolerance.
srand(millis());
float lat = rand_float(-90.0f, 90.0f);
float lon = rand_float(-180.0f, 180.0f);
char lat_str[XXS_BUFFER];
snprintf(lat_str, sizeof(lat_str), "%.4f", lat);
char lon_str[XXS_BUFFER];
snprintf(lon_str, sizeof(lon_str), "%.4f", lon);
PostParam params[] = {
{"lat", lat_str},
{"lon", lon_str}
};
char path[] = "/api/v1/coordinates";
size_t num_params = sizeof(params) / sizeof(params[0]);
client.httpPost(server, path, params, num_params);
client.httpDisconnect();
}
Non essendo così ferrato nello specifico su C++ e su Arduino mi piacerebbe molto approfondire gli eventuali pro sull'utilizzo dei vettori in questo specifico caso.
Ringrazio tutti quanti in anticipo e vi auguro una buona serata.
Un saluto,
Carlo.