From 07767e0cd7183e55aa3c7c8b9ebf72ff63040fa8 Mon Sep 17 00:00:00 2001 From: Bart Friederichs Date: Tue, 15 Nov 2022 16:15:15 +0100 Subject: [PATCH 1/3] Add addHeader --- src/internals/StreamHttpReply.cpp | 5 ++++- src/internals/StreamHttpReply.hpp | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/internals/StreamHttpReply.cpp b/src/internals/StreamHttpReply.cpp index cfbaaa9..a189831 100644 --- a/src/internals/StreamHttpReply.cpp +++ b/src/internals/StreamHttpReply.cpp @@ -18,6 +18,10 @@ ArduinoHttpServer::AbstractStreamHttpReply::AbstractStreamHttpReply(Stream& stre } +void ArduinoHttpServer::AbstractStreamHttpReply::addHeader(const String& name, const String &value) { + +} + //------------------------------------------------------------------------------ //! \brief Send this reply / print this reply to stream. //! \todo: Accept char* also for data coming directly from flash. @@ -40,7 +44,6 @@ void ArduinoHttpServer::AbstractStreamHttpReply::send(const String& data, const DEBUG_ARDUINO_HTTP_SERVER_PRINTLN("done."); } - Stream& ArduinoHttpServer::AbstractStreamHttpReply::getStream() { return m_stream; diff --git a/src/internals/StreamHttpReply.hpp b/src/internals/StreamHttpReply.hpp index 11cbdb7..fc713f5 100644 --- a/src/internals/StreamHttpReply.hpp +++ b/src/internals/StreamHttpReply.hpp @@ -25,6 +25,7 @@ class AbstractStreamHttpReply { public: + void addHeader(const String& name, const String &value); virtual void send(const String& data, const String& title); protected: From 08d35afb0587191e30175466a245764e7d29c8c6 Mon Sep 17 00:00:00 2001 From: Bart Friederichs Date: Tue, 15 Nov 2022 16:22:32 +0100 Subject: [PATCH 2/3] Implement addHeader --- src/internals/StreamHttpReply.cpp | 7 ++++++- src/internals/StreamHttpReply.hpp | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/internals/StreamHttpReply.cpp b/src/internals/StreamHttpReply.cpp index a189831..1e42334 100644 --- a/src/internals/StreamHttpReply.cpp +++ b/src/internals/StreamHttpReply.cpp @@ -19,7 +19,12 @@ ArduinoHttpServer::AbstractStreamHttpReply::AbstractStreamHttpReply(Stream& stre } void ArduinoHttpServer::AbstractStreamHttpReply::addHeader(const String& name, const String &value) { - + if (m_headerCount == MAX_HEADERS) return; + + m_headerNames[m_headerCount] = name; + m_headerValues[m_headerCount] = value; + + m_headerCount++; } //------------------------------------------------------------------------------ diff --git a/src/internals/StreamHttpReply.hpp b/src/internals/StreamHttpReply.hpp index fc713f5..e9f6c17 100644 --- a/src/internals/StreamHttpReply.hpp +++ b/src/internals/StreamHttpReply.hpp @@ -11,9 +11,10 @@ #define __ArduinoHttpServer__StreamHttpReply__ #include - #include "ArduinoHttpServerDebug.h" +#define MAX_HEADERS 3 + namespace ArduinoHttpServer { @@ -38,7 +39,9 @@ class AbstractStreamHttpReply constexpr static const char* CONTENT_TYPE_APPLICATION_JSON PROGMEM = "application/json"; private: - + String m_headerNames[MAX_HEADERS]; + String m_headerValues[MAX_HEADERS]; + int m_headerCount = 0; Stream& m_stream; String m_contentType; //!< Needs to be overridden to default when required. Therefore not const. const String m_code; From e6ab9f261c0c972cc3905f369e5105731be483fd Mon Sep 17 00:00:00 2001 From: Bart Friederichs Date: Tue, 15 Nov 2022 16:24:22 +0100 Subject: [PATCH 3/3] implement sending of extra headers --- src/internals/StreamHttpReply.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/internals/StreamHttpReply.cpp b/src/internals/StreamHttpReply.cpp index 1e42334..1b13aa0 100644 --- a/src/internals/StreamHttpReply.cpp +++ b/src/internals/StreamHttpReply.cpp @@ -43,6 +43,10 @@ void ArduinoHttpServer::AbstractStreamHttpReply::send(const String& data, const getStream().print( AHS_F("Connection: close\r\n") ); getStream().print( AHS_F("Content-Length: ") ); getStream().print( data.length()); getStream().print( AHS_F("\r\n") ); getStream().print( AHS_F("Content-Type: ") ); getStream().print( m_contentType ); getStream().print( AHS_F("\r\n") ); + for(int i = 0; i < m_headerCount; i++) { + getStream().print( m_headerNames[i] ); getStream().print(": "); getStream().print( m_headerValues[i] ); getStream().print( AHS_F("\r\n") ); + } + getStream().print( AHS_F("\r\n") ); getStream().print( data ); getStream().print( AHS_F("\r\n") );