Mercurial > hg > orthanc
diff Core/RestApi/RestApi.h @ 304:4eea080e6e7a
refactoring
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 19 Dec 2012 14:57:18 +0100 |
parents | 4031f73fe0e4 |
children | 78a8eaa5f30b |
line wrap: on
line diff
--- a/Core/RestApi/RestApi.h Tue Dec 18 19:01:01 2012 +0100 +++ b/Core/RestApi/RestApi.h Wed Dec 19 14:57:18 2012 +0100 @@ -55,6 +55,10 @@ const UriComponents* trailing_; const UriComponents* fullUri_; + protected: + static bool ParseJsonRequestInternal(Json::Value& result, + const char* request); + public: RestApiOutput& GetOutput() { @@ -87,6 +91,8 @@ { return HttpHandler::GetArgument(*httpHeaders_, name, defaultValue); } + + virtual bool ParseJsonRequest(Json::Value& result) const = 0; }; @@ -109,6 +115,8 @@ { return getArguments_->find(name) != getArguments_->end(); } + + virtual bool ParseJsonRequest(Json::Value& result) const; }; class PutCall : public SharedCall @@ -119,10 +127,15 @@ const std::string* data_; public: - const std::string& GetPutBody() + const std::string& GetPutBody() const { return *data_; } + + virtual bool ParseJsonRequest(Json::Value& result) const + { + return ParseJsonRequestInternal(result, GetPutBody().c_str()); + } }; class PostCall : public SharedCall @@ -133,14 +146,25 @@ const std::string* data_; public: - const std::string& GetPostBody() + const std::string& GetPostBody() const { return *data_; } + + virtual bool ParseJsonRequest(Json::Value& result) const + { + return ParseJsonRequestInternal(result, GetPostBody().c_str()); + } }; class DeleteCall : public SharedCall { + public: + virtual bool ParseJsonRequest(Json::Value& result) const + { + result.clear(); + return true; + } }; typedef void (*GetHandler) (GetCall& call);