Mercurial > hg > orthanc
diff Core/HttpServer/HttpHandler.cpp @ 1363:feaf2840917c
Plugins now receive duplicated GET arguments in their REST callbacks
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 20 May 2015 15:21:26 +0200 |
parents | 6e7e5ed91c2d |
children | 02f5a3f5c0a0 |
line wrap: on
line diff
--- a/Core/HttpServer/HttpHandler.cpp Fri May 15 17:33:43 2015 +0200 +++ b/Core/HttpServer/HttpHandler.cpp Wed May 20 15:21:26 2015 +0200 @@ -39,7 +39,7 @@ namespace Orthanc { - static void SplitGETNameValue(HttpHandler::Arguments& result, + static void SplitGETNameValue(HttpHandler::GetArguments& result, const char* start, const char* end) { @@ -60,11 +60,12 @@ Toolbox::UrlDecode(name); Toolbox::UrlDecode(value); - result.insert(std::make_pair(name, value)); + result.push_back(std::make_pair(name, value)); } - void HttpHandler::ParseGetArguments(HttpHandler::Arguments& result, const char* query) + void HttpHandler::ParseGetArguments(HttpHandler::GetArguments& result, + const char* query) { const char* pos = query; @@ -87,7 +88,7 @@ void HttpHandler::ParseGetQuery(UriComponents& uri, - HttpHandler::Arguments& getArguments, + HttpHandler::GetArguments& getArguments, const char* query) { const char *questionMark = ::strchr(query, '?'); @@ -104,7 +105,7 @@ } } - + std::string HttpHandler::GetArgument(const Arguments& getArguments, const std::string& name, const std::string& defaultValue) @@ -121,6 +122,22 @@ } + std::string HttpHandler::GetArgument(const GetArguments& getArguments, + const std::string& name, + const std::string& defaultValue) + { + for (size_t i = 0; i < getArguments.size(); i++) + { + if (getArguments[i].first == name) + { + return getArguments[i].second; + } + } + + return defaultValue; + } + + void HttpHandler::ParseCookies(HttpHandler::Arguments& result, const HttpHandler::Arguments& httpHeaders) @@ -159,4 +176,16 @@ } } } + + + void HttpHandler::CompileGetArguments(Arguments& compiled, + const GetArguments& source) + { + compiled.clear(); + + for (size_t i = 0; i < source.size(); i++) + { + compiled[source[i].first] = source[i].second; + } + } }