98 lines
2.4 KiB
C++
98 lines
2.4 KiB
C++
#include "dow_fetch.h"
|
|
|
|
int dow_fetch(const char *url, std::vector<dow_item_t> &target)
|
|
{
|
|
int responseCode = -1;
|
|
|
|
WiFiClient client;
|
|
HTTPClient http;
|
|
|
|
http.useHTTP10(true);
|
|
http.begin(client, url);
|
|
|
|
responseCode = http.GET();
|
|
|
|
if (responseCode != 200)
|
|
{
|
|
Serial.print("HTTPClient error:");
|
|
Serial.println(responseCode);
|
|
http.end();
|
|
return -1;
|
|
}
|
|
|
|
JsonDocument doc;
|
|
deserializeJson(doc, http.getStream());
|
|
|
|
target.clear();
|
|
|
|
dow_item_t dow_item;
|
|
uint32_t i = 0;
|
|
for (JsonObject item : doc.as<JsonArray>())
|
|
{
|
|
i++;
|
|
|
|
if (!item.containsKey("x") || !item.containsKey("y") || !item.containsKey("t"))
|
|
{
|
|
Serial.print("Invalid item at index ");
|
|
Serial.println(i - 1);
|
|
continue;
|
|
}
|
|
|
|
// These are required
|
|
dow_item.x = item["x"].as<int>();
|
|
dow_item.y = item["y"].as<int>();
|
|
dow_item.type = item["t"].as<int>();
|
|
|
|
// Reset to default values
|
|
dow_item.verticalAlign = 0;
|
|
dow_item.horizontalAlign = 0;
|
|
dow_item.font = 0;
|
|
dow_item.radius = 0;
|
|
dow_item.contents = "";
|
|
|
|
if (item.containsKey("x2"))
|
|
dow_item.x2 = item["x2"].as<int>();
|
|
if (item.containsKey("y2"))
|
|
dow_item.y2 = item["y2"].as<int>();
|
|
if (item.containsKey("r"))
|
|
dow_item.radius = item["r"].as<float>();
|
|
if (item.containsKey("f"))
|
|
dow_item.font = item["f"].as<int>();
|
|
if (item.containsKey("va"))
|
|
dow_item.verticalAlign = item["va"].as<int>();
|
|
if (item.containsKey("ha"))
|
|
dow_item.horizontalAlign = item["ha"].as<int>();
|
|
if (item.containsKey("c"))
|
|
dow_item.contents = item["c"].as<String>();
|
|
|
|
/*
|
|
Serial.print("x: ");
|
|
Serial.print(dow_item.x);
|
|
Serial.print(" y: ");
|
|
Serial.print(dow_item.y);
|
|
Serial.print(" x2: ");
|
|
Serial.print(dow_item.x2);
|
|
Serial.print(" y2: ");
|
|
Serial.print(dow_item.y2);
|
|
Serial.print(" r: ");
|
|
Serial.print(dow_item.radius);
|
|
Serial.print(" t: ");
|
|
Serial.print(dow_item.type);
|
|
Serial.print(" f: ");
|
|
Serial.print(dow_item.font);
|
|
Serial.print(" va: ");
|
|
Serial.print(dow_item.verticalAlign);
|
|
Serial.print(" ha: ");
|
|
Serial.print(dow_item.horizontalAlign);
|
|
Serial.print(" c: ");
|
|
Serial.println(dow_item.contents);
|
|
*/
|
|
|
|
target.push_back(dow_item);
|
|
}
|
|
|
|
http.end();
|
|
|
|
return 0;
|
|
}
|