params->Set("path", boost::algorithm::join(tmpPath, "/"));
}
- String moduleName = params->Get("module");
- String stageName = params->Get("stage");
+ String moduleName = HttpUtility::GetLastParameter(params, "module");
+ String stageName = HttpUtility::GetLastParameter(params, "stage");
if (!ConfigModuleUtility::ValidateName(moduleName) || !ConfigModuleUtility::ValidateName(stageName)) {
response.SetStatus(403, "Forbidden");
return;
}
- String relativePath = params->Get("path");
+ String relativePath = HttpUtility::GetLastParameter(params, "path");
if (ConfigModuleUtility::ContainsDotDot(relativePath)) {
response.SetStatus(403, "Forbidden");
if (request.RequestUrl->GetPath().size() >= 4)
params->Set("module", request.RequestUrl->GetPath()[3]);
- String moduleName = params->Get("module");
+ String moduleName = HttpUtility::GetLastParameter(params, "module");
if (!ConfigModuleUtility::ValidateName(moduleName)) {
response.SetStatus(403, "Forbidden");
if (request.RequestUrl->GetPath().size() >= 4)
params->Set("module", request.RequestUrl->GetPath()[3]);
- String moduleName = params->Get("module");
+ String moduleName = HttpUtility::GetLastParameter(params, "module");
if (!ConfigModuleUtility::ValidateName(moduleName)) {
response.SetStatus(403, "Forbidden");
if (request.RequestUrl->GetPath().size() >= 5)
params->Set("stage", request.RequestUrl->GetPath()[4]);
- String moduleName = params->Get("module");
- String stageName = params->Get("stage");
+ String moduleName = HttpUtility::GetLastParameter(params, "module");
+ String stageName = HttpUtility::GetLastParameter(params, "stage");
if (!ConfigModuleUtility::ValidateName(moduleName) || !ConfigModuleUtility::ValidateName(stageName)) {
response.SetStatus(403, "Forbidden");
if (request.RequestUrl->GetPath().size() >= 4)
params->Set("module", request.RequestUrl->GetPath()[3]);
- String moduleName = params->Get("module");
+ String moduleName = HttpUtility::GetLastParameter(params, "module");
if (!ConfigModuleUtility::ValidateName(moduleName)) {
response.SetStatus(403, "Forbidden");
if (request.RequestUrl->GetPath().size() >= 5)
params->Set("stage", request.RequestUrl->GetPath()[4]);
- String moduleName = params->Get("module");
- String stageName = params->Get("stage");
+ String moduleName = HttpUtility::GetLastParameter(params, "module");
+ String stageName = HttpUtility::GetLastParameter(params, "stage");
if (!ConfigModuleUtility::ValidateName(moduleName) || !ConfigModuleUtility::ValidateName(stageName)) {
response.SetStatus(403, "Forbidden");
******************************************************************************/
#include "remote/filterutility.hpp"
+#include "remote/httputility.hpp"
#include "config/configcompiler.hpp"
#include "config/expression.hpp"
#include "base/json.hpp"
#include "base/dynamictype.hpp"
+#include "base/logger.hpp"
#include <boost/foreach.hpp>
#include <boost/algorithm/string.hpp>
if (!query->Contains("type"))
BOOST_THROW_EXCEPTION(std::invalid_argument("Type must be specified when using a filter."));
- String filter = query->Get("filter");
- String type = query->Get("type");
+ String filter = HttpUtility::GetLastParameter(query, "filter");
+ String type = HttpUtility::GetLastParameter(query, "type");
+
+ Log(LogInformation, "FilterUtility", filter);
Type::Ptr utype = Type::GetByName(type);
response.WriteBody(body.CStr(), body.GetLength());
}
+String HttpUtility::GetLastParameter(const Dictionary::Ptr& params, const String& key)
+{
+ Value varr = params->Get(key);
+
+ if (!varr.IsObjectType<Array>())
+ return varr;
+ Array::Ptr arr = varr;
+
+ if (arr->GetLength() == 0)
+ return String();
+ else
+ return arr->Get(arr->GetLength() - 1);
+}
public:
static Dictionary::Ptr FetchRequestParameters(HttpRequest& request);
static void SendJsonBody(HttpResponse& response, const Value& val);
+ static String GetLastParameter(const Dictionary::Ptr& params, const String& key);
};
}