Ref T149, improved error message for JsonDatastoreResponse able to catch PHP error messages

This commit is contained in:
Klaus Basan
2017-09-17 23:37:36 +02:00
committed by Mathew Sutcliffe
parent 0cf308450e
commit 8c68f2302c

View File

@@ -660,16 +660,34 @@ namespace BlackCore
void CDatabaseReader::stringToDatastoreResponse(const QString &jsonContent, JsonDatastoreResponse &datastoreResponse)
{
const int status = datastoreResponse.getHttpStatusCode();
if (jsonContent.isEmpty())
{
datastoreResponse.setMessage(CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, "Empty string, no data"));
static const QString errorMsg = "Empty JSON string, status: %1, URL: '%2', load time: %3";
datastoreResponse.setMessage(CStatusMessage(getLogCategories(),
CStatusMessage::SeverityError,
errorMsg.arg(status).arg(datastoreResponse.getUrlString(), datastoreResponse.getLoadTimeStringWithStartedHint())));
return;
}
const QJsonDocument jsonResponse = CDatabaseUtils::databaseJsonToQJsonDocument(jsonContent);
if (jsonResponse.isEmpty())
{
datastoreResponse.setMessage(CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, "Empty JSON, no data"));
if (CNetworkUtils::looksLikePhpErrorMessage(jsonContent))
{
static const QString errorMsg = "Looks like PHP errror, status %1, URL: '%2', msg: %3";
const QString phpErrorMessage = CNetworkUtils::removeHtmlPartsFromPhpErrorMessage(jsonContent);
datastoreResponse.setMessage(CStatusMessage(getLogCategories(),
CStatusMessage::SeverityError,
errorMsg.arg(status).arg(datastoreResponse.getUrlString(), phpErrorMessage)));
}
else
{
static const QString errorMsg = "Empty JSON document, URL: '%1', load time: %2";
datastoreResponse.setMessage(CStatusMessage(getLogCategories(),
CStatusMessage::SeverityError,
errorMsg.arg(datastoreResponse.getUrlString(), datastoreResponse.getLoadTimeStringWithStartedHint())));
}
return;
}