diff --git a/lib_standalone/ESPAsyncWebServer.h b/lib_standalone/ESPAsyncWebServer.h index 9de5dc09d..af5a97fc4 100644 --- a/lib_standalone/ESPAsyncWebServer.h +++ b/lib_standalone/ESPAsyncWebServer.h @@ -76,6 +76,7 @@ class AsyncWebServerRequest { void * _tempObject; AsyncWebServerRequest(AsyncWebServer *, AsyncClient *){}; + AsyncWebServerRequest(){}; ~AsyncWebServerRequest(){}; AsyncClient * client() { @@ -119,6 +120,10 @@ class AsyncWebServerRequest { return false; } + bool hasParam(const char * name) const { + return false; + } + bool hasParam(const __FlashStringHelper * data) const { return false; } @@ -139,6 +144,10 @@ class AsyncWebServerRequest { return nullptr; } + AsyncWebParameter * getParam(const char * name) const { + return nullptr; + } + AsyncWebParameter * getParam(size_t num) const { return nullptr; } diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index 64be97391..0749a271a 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -82,9 +82,9 @@ void WebAPIService::webAPIService_post(AsyncWebServerRequest * request, JsonVari // parse the URL looking for query or path parameters // reporting back any errors void WebAPIService::parse(AsyncWebServerRequest * request, std::string & device_s, std::string & cmd_s, int id, std::string & value_s) { -#ifndef EMSESP_STANDALONE // parse URL for the path names SUrlParser p; + p.parse(request->url().c_str()); // remove the /api from the path @@ -195,6 +195,14 @@ void WebAPIService::parse(AsyncWebServerRequest * request, std::string & device_ response->setLength(); request->send(response); // send json response +// TODO debug +#if defined EMSESP_STANDALONE + Serial.print(COLOR_YELLOW); + if (json.size() != 0) { + serializeJsonPretty(json, Serial); + } + Serial.println(); + Serial.print(COLOR_RESET); #endif } diff --git a/src/WebAPIService.h b/src/WebAPIService.h index 13fd5aa66..97f03f972 100644 --- a/src/WebAPIService.h +++ b/src/WebAPIService.h @@ -60,13 +60,13 @@ class WebAPIService { public: WebAPIService(AsyncWebServer * server, SecurityManager * securityManager); + void webAPIService_post(AsyncWebServerRequest * request, JsonVariant & json); // for POSTs + void webAPIService_get(AsyncWebServerRequest * request); // for GETs + private: SecurityManager * _securityManager; AsyncCallbackJsonWebHandler _apiHandler; // for POSTs - void webAPIService_post(AsyncWebServerRequest * request, JsonVariant & json); // for POSTs - void webAPIService_get(AsyncWebServerRequest * request); // for GETs - void parse(AsyncWebServerRequest * request, std::string & device, std::string & cmd, int id, std::string & value); void send_message_response(AsyncWebServerRequest * request, uint16_t error_code, const char * error_message = nullptr); }; diff --git a/src/test/test.cpp b/src/test/test.cpp index 18b908d53..bf531746b 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -931,8 +931,17 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { if (command == "api") { shell.printfln(F("Testing RESTful API...")); - // TODO add API - // AsyncWebServerRequest * request; + Mqtt::ha_enabled(false); + run_test("general"); + DynamicJsonDocument doc(EMSESP_JSON_SIZE_XXLARGE_DYN); + JsonObject json = doc.to(); + AsyncWebServerRequest request; + request.method(HTTP_GET); + request.url("/api/thermostat/seltemp"); + EMSESP::webAPIService.webAPIService_get(&request); + + request.url("/api/boiler/syspress"); + EMSESP::webAPIService.webAPIService_get(&request); } } diff --git a/src/test/test.h b/src/test/test.h index 076bdfc1d..3707bbfa3 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -37,7 +37,8 @@ namespace emsesp { // #define EMSESP_DEBUG_DEFAULT "ha" // #define EMSESP_DEBUG_DEFAULT "board_profile" // #define EMSESP_DEBUG_DEFAULT "shower_alert" -#define EMSESP_DEBUG_DEFAULT "310" +// #define EMSESP_DEBUG_DEFAULT "310" +#define EMSESP_DEBUG_DEFAULT "api" class Test { public: