} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 400,
"Type/Filter was required but not provided or was invalid.",
- request.GetVerboseErrors() ? DiagnosticInformation(ex) : "");
+ HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
return true;
}
} else {
Dictionary::Ptr fail = new Dictionary();
fail->Set("code", 500);
fail->Set("status", "Action execution failed.");
- if (request.GetVerboseErrors())
+ if (HttpUtility::GetLastParameter(params, "verboseErrors"))
fail->Set("diagnostic information", DiagnosticInformation(ex));
results->Add(fail);
}
response.WriteBody(content.CStr(), content.GetLength());
} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 500, "Could not read file.",
- request.GetVerboseErrors() ? DiagnosticInformation(ex) : "");
+ HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
}
return true;
ConfigPackageUtility::CreatePackage(packageName);
} catch (const std::exception& ex) {
HttpUtility::SendJsonError(response, 500, "Could not create package.",
- request.GetVerboseErrors() ? DiagnosticInformation(ex) : "");
+ HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
}
result1->Set("code", 200);
} catch (const std::exception& ex) {
code = 500;
status = "Failed to delete package.";
- if (request.GetVerboseErrors())
+ if (HttpUtility::GetLastParameter(params, "verboseErrors"))
result1->Set("diagnostic information", DiagnosticInformation(ex));
}
} catch (const std::exception& ex) {
return HttpUtility::SendJsonError(response, 500,
"Stage creation failed.",
- request.GetVerboseErrors() ? DiagnosticInformation(ex) : "");
+ HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
}
Dictionary::Ptr result1 = new Dictionary();
} catch (const std::exception& ex) {
return HttpUtility::SendJsonError(response, 500,
"Failed to delete stage.",
- request.GetVerboseErrors() ? DiagnosticInformation(ex) : "");
+ HttpUtility::GetLastParameter(params, "verboseErrors") ? DiagnosticInformation(ex) : "");
}
Dictionary::Ptr result1 = new Dictionary();
ProtocolVersion(HttpVersion11),
Headers(new Dictionary()),
m_Stream(stream),
- m_State(HttpRequestStart),
- verboseErrors(false)
+ m_State(HttpRequestStart)
{ }
bool HttpRequest::Parse(StreamReadContext& src, bool may_wait)
RequestMethod = tokens[0];
RequestUrl = new class Url(tokens[1]);
- verboseErrors = (RequestUrl->GetQueryElement("verboseErrors") == "true");
if (tokens[2] == "HTTP/1.0")
ProtocolVersion = HttpVersion10;
void WriteBody(const char *data, size_t count);
void Finish(void);
- inline bool GetVerboseErrors(void)
- { return verboseErrors; }
-
private:
Stream::Ptr m_Stream;
boost::shared_ptr<ChunkReadContext> m_ChunkContext;
HttpRequestState m_State;
FIFO::Ptr m_Body;
- bool verboseErrors;
void FinishHeaders(void);
};
try {
res = m_CurrentRequest.Parse(m_Context, false);
+ } catch (const std::invalid_argument& ex) {
+ HttpResponse response(m_Stream, m_CurrentRequest);
+ response.SetStatus(400, "Bad request");
+ String msg = String("<h1>Bad request</h1><p><pre>") + ex.what() + "</pre></p>";
+ response.WriteBody(msg.CStr(), msg.GetLength());
+ response.Finish();
+
+ m_Stream->Shutdown();
+ return false;
} catch (const std::exception& ex) {
HttpResponse response(m_Stream, m_CurrentRequest);
response.SetStatus(400, "Bad request");