diff --git a/modules/beast_asio/http/HTTPHeaders.cpp b/modules/beast_asio/http/HTTPHeaders.cpp index f28f5113f..48c460026 100644 --- a/modules/beast_asio/http/HTTPHeaders.cpp +++ b/modules/beast_asio/http/HTTPHeaders.cpp @@ -72,3 +72,15 @@ String HTTPHeaders::operator[] (String const& field) const { return get (field); } + +String HTTPHeaders::toString () const +{ + String s; + for (int i = 0; i < m_fields.size (); ++i) + { + HTTPField const field (at(i)); + s << field.name() << ": " << field.value() << newLine; + } + return s; +} + diff --git a/modules/beast_asio/http/HTTPHeaders.h b/modules/beast_asio/http/HTTPHeaders.h index d2a1a4cad..6cf7e7e2a 100644 --- a/modules/beast_asio/http/HTTPHeaders.h +++ b/modules/beast_asio/http/HTTPHeaders.h @@ -61,6 +61,9 @@ public: String operator[] (String const& field) const; /** @} */ + /** Outputs all the headers into one string. */ + String toString () const; + private: StringPairArray m_fields; }; diff --git a/modules/beast_asio/http/HTTPMessage.cpp b/modules/beast_asio/http/HTTPMessage.cpp index aeb743843..c08c549bf 100644 --- a/modules/beast_asio/http/HTTPMessage.cpp +++ b/modules/beast_asio/http/HTTPMessage.cpp @@ -40,3 +40,11 @@ ContentBodyBuffer const& HTTPMessage::body () const { return m_body; } + +String HTTPMessage::toString () const +{ + String s; + s << "HTTP " << version().toString() << newLine; + s << m_headers.toString (); + return s; +} diff --git a/modules/beast_asio/http/HTTPMessage.h b/modules/beast_asio/http/HTTPMessage.h index 549d7d43c..0280b0fb3 100644 --- a/modules/beast_asio/http/HTTPMessage.h +++ b/modules/beast_asio/http/HTTPMessage.h @@ -51,6 +51,9 @@ public: /** Returns the content-body. */ ContentBodyBuffer const& body () const; + /** Outputs all the HTTPMessage data excluding the body into a string. */ + String toString () const; + private: HTTPVersion m_version; HTTPHeaders m_headers; diff --git a/modules/beast_asio/http/HTTPResponse.cpp b/modules/beast_asio/http/HTTPResponse.cpp index 7396127b5..a4cd89a30 100644 --- a/modules/beast_asio/http/HTTPResponse.cpp +++ b/modules/beast_asio/http/HTTPResponse.cpp @@ -31,3 +31,12 @@ unsigned short HTTPResponse::status () const { return m_status; } + +String HTTPResponse::toString () const +{ + String s; + s << "Status: " << String::fromNumber (status ()) << newLine; + s << this->HTTPMessage::toString (); + return s; +} + diff --git a/modules/beast_asio/http/HTTPResponse.h b/modules/beast_asio/http/HTTPResponse.h index bb3f89cb1..7c7d80ff4 100644 --- a/modules/beast_asio/http/HTTPResponse.h +++ b/modules/beast_asio/http/HTTPResponse.h @@ -35,6 +35,9 @@ public: unsigned short status () const; + /** Convert the response into a string, excluding the body. */ + String toString () const; + private: unsigned short m_status; };