From c1004fadc779cee7d95c771e7c47c5c8fe74194f Mon Sep 17 00:00:00 2001 From: iranl Date: Mon, 30 Dec 2024 20:38:34 +0100 Subject: [PATCH] PsychicHTTP v2 fixes --- lib/PsychicHttp/src/PsychicHttpServer.cpp | 33 +++++-------------- lib/PsychicHttp/src/PsychicHttpServer.h | 1 - lib/PsychicHttp/src/PsychicRequest.cpp | 26 ++++++++++++--- lib/PsychicHttp/src/PsychicRequest.h | 2 ++ lib/PsychicHttp/src/PsychicStreamResponse.cpp | 4 +-- 5 files changed, 35 insertions(+), 31 deletions(-) diff --git a/lib/PsychicHttp/src/PsychicHttpServer.cpp b/lib/PsychicHttp/src/PsychicHttpServer.cpp index 958e5d9..908d660 100644 --- a/lib/PsychicHttp/src/PsychicHttpServer.cpp +++ b/lib/PsychicHttp/src/PsychicHttpServer.cpp @@ -5,11 +5,9 @@ #include "PsychicStaticFileHandler.h" #include "PsychicWebHandler.h" #include "PsychicWebSocket.h" +#ifndef CONFIG_IDF_TARGET_ESP32H2 #include "WiFi.h" -#ifdef PSY_ENABLE_ETHERNET - #include "ETH.h" #endif - PsychicHttpServer::PsychicHttpServer(uint16_t port) { maxRequestBodySize = MAX_REQUEST_BODY_SIZE; @@ -82,32 +80,11 @@ uint16_t PsychicHttpServer::getPort() return this->config.server_port; } -bool PsychicHttpServer::isConnected() -{ - if (WiFi.softAPIP()) - return true; - if (WiFi.localIP()) - return true; - -#ifdef PSY_ENABLE_ETHERNET - if (ETH.localIP()) - return true; -#endif - - return false; -} - esp_err_t PsychicHttpServer::start() { if (_running) return ESP_OK; - // starting without network will crash us. - if (!isConnected()) { - ESP_LOGE(PH_TAG, "Server start failed - no network."); - return ESP_FAIL; - } - esp_err_t ret; #ifdef ENABLE_ASYNC @@ -630,12 +607,20 @@ const std::list& PsychicHttpServer::getClientList() bool ON_STA_FILTER(PsychicRequest* request) { + #if defined(CONFIG_IDF_TARGET_ESP32H2) + return false; + #else return WiFi.localIP() == request->client()->localIP(); + #endif } bool ON_AP_FILTER(PsychicRequest* request) { + #if defined(CONFIG_IDF_TARGET_ESP32H2) + return false; + #else return WiFi.softAPIP() == request->client()->localIP(); + #endif } String urlDecode(const char* encoded) diff --git a/lib/PsychicHttp/src/PsychicHttpServer.h b/lib/PsychicHttp/src/PsychicHttpServer.h index c4afb6c..9fef275 100644 --- a/lib/PsychicHttp/src/PsychicHttpServer.h +++ b/lib/PsychicHttp/src/PsychicHttpServer.h @@ -73,7 +73,6 @@ class PsychicHttpServer virtual void setPort(uint16_t port); virtual uint16_t getPort(); - bool isConnected(); bool isRunning() { return _running; } esp_err_t begin() { return start(); } esp_err_t end() { return stop(); } diff --git a/lib/PsychicHttp/src/PsychicRequest.cpp b/lib/PsychicHttp/src/PsychicRequest.cpp index 0f4de06..e4272d0 100644 --- a/lib/PsychicHttp/src/PsychicRequest.cpp +++ b/lib/PsychicHttp/src/PsychicRequest.cpp @@ -371,6 +371,11 @@ void PsychicRequest::_setUri(const char* uri) } } +int PsychicRequest::params() +{ + return _params.size(); +} + void PsychicRequest::_addParams(const String& params, bool post) { size_t start = 0; @@ -422,6 +427,18 @@ PsychicWebParameter* PsychicRequest::getParam(const char* key) return NULL; } +PsychicWebParameter * PsychicRequest::getParam(int index) +{ + if (_params.size() > index){ + std::list::iterator it = _params.begin(); + for(int i=0; imethod(); + if (method == HTTP_GET) { _H2 = md5str(String(F("GET:")) + _url); - } else if (_method == HTTP_POST) { + } else if (method == HTTP_POST) { _H2 = md5str(String(F("POST:")) + _url); - } else if (_method == HTTP_PUT) { + } else if (method == HTTP_PUT) { _H2 = md5str(String(F("PUT:")) + _url); - } else if (_method == HTTP_DELETE) { + } else if (method == HTTP_DELETE) { _H2 = md5str(String(F("DELETE:")) + _url); } else { _H2 = md5str(String(F("GET:")) + _url); diff --git a/lib/PsychicHttp/src/PsychicRequest.h b/lib/PsychicHttp/src/PsychicRequest.h index 73f6613..59411ac 100644 --- a/lib/PsychicHttp/src/PsychicRequest.h +++ b/lib/PsychicHttp/src/PsychicRequest.h @@ -130,9 +130,11 @@ class PsychicRequest void loadParams(); PsychicWebParameter* addParam(PsychicWebParameter* param); PsychicWebParameter* addParam(const String& name, const String& value, bool decode = true, bool post = false); + int params(); bool hasParam(const char* key); bool hasParam(const char* key, bool isPost, bool isFile = false); PsychicWebParameter* getParam(const char* name); + PsychicWebParameter* getParam(int index); PsychicWebParameter* getParam(const char* name, bool isPost, bool isFile = false); const String getFilename(); diff --git a/lib/PsychicHttp/src/PsychicStreamResponse.cpp b/lib/PsychicHttp/src/PsychicStreamResponse.cpp index 8723090..dfdca2c 100644 --- a/lib/PsychicHttp/src/PsychicStreamResponse.cpp +++ b/lib/PsychicHttp/src/PsychicStreamResponse.cpp @@ -6,8 +6,8 @@ PsychicStreamResponse::PsychicStreamResponse(PsychicResponse* response, const St : PsychicResponseDelegate(response), _buffer(NULL) { - setContentType(contentType.c_str()); - addHeader("Content-Disposition", "inline"); + //setContentType(contentType.c_str()); + //addHeader("Content-Disposition", "inline"); } PsychicStreamResponse::PsychicStreamResponse(PsychicResponse* response, const String& contentType, const String& name)