mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-25 20:26:41 +00:00
Add api/info endpoint #246
This commit is contained in:
parent
4d031db2de
commit
d1a7975347
@ -8,6 +8,8 @@
|
|||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
#include "Update.h"
|
#include "Update.h"
|
||||||
#include "sdkconfig.h" // for CONFIG_IDF_TARGET_ESP32* defines
|
#include "sdkconfig.h" // for CONFIG_IDF_TARGET_ESP32* defines
|
||||||
|
#include <uri/UriBraces.h>
|
||||||
|
#include <uri/UriRegex.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "hasp_conf.h"
|
#include "hasp_conf.h"
|
||||||
@ -456,6 +458,54 @@ static void webHandleScreenshot()
|
|||||||
webSendFooter();
|
webSendFooter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
static void add_json(String& data, JsonDocument& doc)
|
||||||
|
{
|
||||||
|
char buffer[512];
|
||||||
|
size_t len = serializeJson(doc, buffer, sizeof(buffer));
|
||||||
|
if(doc.isNull()) return; // empty document
|
||||||
|
|
||||||
|
buffer[len - 1] = ',';
|
||||||
|
char* start = buffer + 1;
|
||||||
|
data += String(start);
|
||||||
|
doc.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void webHandleApi()
|
||||||
|
{ // http://plate01/about
|
||||||
|
if(!httpIsAuthenticated(F("api"))) return;
|
||||||
|
|
||||||
|
String endpoint((char*)0);
|
||||||
|
endpoint = webServer.pathArg(0);
|
||||||
|
|
||||||
|
if(!strcasecmp_P(endpoint.c_str(), PSTR("info"))) {
|
||||||
|
String htmldata((char*)0);
|
||||||
|
htmldata.reserve(HTTP_PAGE_SIZE);
|
||||||
|
DynamicJsonDocument doc(512);
|
||||||
|
|
||||||
|
htmldata = "{";
|
||||||
|
|
||||||
|
hasp_get_info(doc);
|
||||||
|
add_json(htmldata, doc);
|
||||||
|
|
||||||
|
#if HASP_USE_MQTT > 0
|
||||||
|
mqtt_get_info(doc);
|
||||||
|
add_json(htmldata, doc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
network_get_info(doc);
|
||||||
|
add_json(htmldata, doc);
|
||||||
|
|
||||||
|
haspDevice.get_info(doc);
|
||||||
|
add_json(htmldata, doc);
|
||||||
|
|
||||||
|
htmldata[htmldata.length() - 1] = '}'; // Replace last comma with a bracket
|
||||||
|
|
||||||
|
String contentType = getContentType(F(".json"));
|
||||||
|
webServer.send(200, contentType, htmldata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
static void webHandleAbout()
|
static void webHandleAbout()
|
||||||
{ // http://plate01/about
|
{ // http://plate01/about
|
||||||
@ -511,18 +561,6 @@ static void webHandleAbout()
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
static void add_json(String& data, JsonDocument& doc)
|
|
||||||
{
|
|
||||||
char buffer[512];
|
|
||||||
size_t len = serializeJson(doc, buffer, sizeof(buffer));
|
|
||||||
if(doc.isNull()) return; // empty document
|
|
||||||
|
|
||||||
buffer[len - 1] = ',';
|
|
||||||
char* start = buffer + 1;
|
|
||||||
data += String(start);
|
|
||||||
doc.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void webHandleInfoJson()
|
static void webHandleInfoJson()
|
||||||
{ // http://plate01/
|
{ // http://plate01/
|
||||||
if(!httpIsAuthenticated(F("infojson"))) return;
|
if(!httpIsAuthenticated(F("infojson"))) return;
|
||||||
@ -2263,6 +2301,7 @@ void httpSetup()
|
|||||||
webServer.on(F("/vars.css"), webSendCssVars);
|
webServer.on(F("/vars.css"), webSendCssVars);
|
||||||
// webServer.on(F("/js"), webSendJavascript);
|
// webServer.on(F("/js"), webSendJavascript);
|
||||||
webServer.onNotFound(httpHandleNotFound);
|
webServer.onNotFound(httpHandleNotFound);
|
||||||
|
webServer.on(UriBraces(F("/api/{}")), webHandleApi);
|
||||||
|
|
||||||
#if HASP_USE_WIFI > 0
|
#if HASP_USE_WIFI > 0
|
||||||
// These two endpoints are needed in STA and AP mode
|
// These two endpoints are needed in STA and AP mode
|
||||||
|
Loading…
x
Reference in New Issue
Block a user