diff Core/RestApi/RestApiPutCall.h @ 1446:8dc80ba768aa

refactoring: IHttpHandler does not use std::string to hold the request body
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 01 Jul 2015 13:16:12 +0200
parents f3672356c121
children 3232f1c995a5
line wrap: on
line diff
--- a/Core/RestApi/RestApiPutCall.h	Wed Jul 01 12:30:19 2015 +0200
+++ b/Core/RestApi/RestApiPutCall.h	Wed Jul 01 13:16:12 2015 +0200
@@ -39,7 +39,8 @@
   class RestApiPutCall : public RestApiCall
   {
   private:
-    const std::string& data_;
+    const char* bodyData_;
+    size_t bodySize_;
 
   public:
     typedef void (*Handler) (RestApiPutCall& call);
@@ -50,20 +51,32 @@
                    const IHttpHandler::Arguments& uriComponents,
                    const UriComponents& trailing,
                    const UriComponents& fullUri,
-                   const std::string& data) :
+                   const char* bodyData,
+                   size_t bodySize) :
       RestApiCall(output, context, httpHeaders, uriComponents, trailing, fullUri),
-      data_(data)
+      bodyData_(bodyData),
+      bodySize_(bodySize)
     {
     }
 
-    const std::string& GetPutBody() const
+    const char* GetBodyData() const
+    {
+      return bodyData_;
+    }
+
+    size_t GetBodySize() const
     {
-      return data_;
+      return bodySize_;
+    }
+
+    void BodyToString(std::string& result) const
+    {
+      result.assign(bodyData_, bodySize_);
     }
 
     virtual bool ParseJsonRequest(Json::Value& result) const
     {
-      return ParseJsonRequestInternal(result, GetPutBody().c_str());
+      return ParseJsonRequestInternal(result, bodyData_);
     }      
   };
 }