]> granicus.if.org Git - icinga2/commitdiff
Add HttpUtility::SendJsonBody() overload for Boost/Beast
authorAlexander A. Klimov <alexander.klimov@icinga.com>
Thu, 14 Feb 2019 12:12:36 +0000 (13:12 +0100)
committerAlexander A. Klimov <alexander.klimov@icinga.com>
Mon, 1 Apr 2019 09:40:14 +0000 (11:40 +0200)
lib/remote/httputility.cpp
lib/remote/httputility.hpp

index 043f3cf9e60d1bbbac7480a8024c158a6b41bfc1..f7fef77139524335cc4dc758b54b785f45126c19 100644 (file)
@@ -5,6 +5,7 @@
 #include "base/logger.hpp"
 #include <map>
 #include <vector>
+#include <boost/beast/http.hpp>
 
 using namespace icinga;
 
@@ -55,6 +56,15 @@ void HttpUtility::SendJsonBody(HttpResponse& response, const Dictionary::Ptr& pa
        response.WriteBody(body.CStr(), body.GetLength());
 }
 
+void HttpUtility::SendJsonBody(boost::beast::http::response<boost::beast::http::string_body>& response, const Dictionary::Ptr& params, const Value& val)
+{
+       namespace http = boost::beast::http;
+
+       response.set(http::field::content_type, "application/json");
+       response.body() = JsonEncode(val, params && GetLastParameter(params, "pretty"));
+       response.set(http::field::content_length, response.body().size());
+}
+
 Value HttpUtility::GetLastParameter(const Dictionary::Ptr& params, const String& key)
 {
        Value varr = params->Get(key);
index 0a0418161617254b0b6891716ea1e65d5fc3b8ad..e758b2663ea3974b32ec50509f0100e0f2522319 100644 (file)
@@ -6,6 +6,7 @@
 #include "remote/httprequest.hpp"
 #include "remote/httpresponse.hpp"
 #include "base/dictionary.hpp"
+#include <boost/beast/http.hpp>
 
 namespace icinga
 {
@@ -21,6 +22,7 @@ class HttpUtility
 public:
        static Dictionary::Ptr FetchRequestParameters(HttpRequest& request);
        static void SendJsonBody(HttpResponse& response, const Dictionary::Ptr& params, const Value& val);
+       static void SendJsonBody(boost::beast::http::response<boost::beast::http::string_body>& response, const Dictionary::Ptr& params, const Value& val);
        static Value GetLastParameter(const Dictionary::Ptr& params, const String& key);
        static void SendJsonError(HttpResponse& response, const Dictionary::Ptr& params, const int code,
                const String& verbose = String(), const String& diagnosticInformation = String());