[Libreoffice-commits] online.git: loolwsd/Storage.cpp
Michael Meeks
michael.meeks at collabora.com
Fri Oct 21 09:27:55 UTC 2016
loolwsd/Storage.cpp | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
New commits:
commit c015fecb2cae413e2e9fdc008e088b0a56599779
Author: Michael Meeks <michael.meeks at collabora.com>
Date: Fri Oct 21 09:57:17 2016 +0100
Improve logging of WOPI protocol errors.
diff --git a/loolwsd/Storage.cpp b/loolwsd/Storage.cpp
index f12c056..a20691d 100644
--- a/loolwsd/Storage.cpp
+++ b/loolwsd/Storage.cpp
@@ -263,6 +263,14 @@ Poco::Net::HTTPClientSession* getHTTPClientSession(const Poco::URI& uri)
: new Poco::Net::HTTPClientSession(uri.getHost(), uri.getPort());
}
+Poco::Dynamic::Var getOrWarn(const Poco::JSON::Object::Ptr &object, const char *key)
+{
+ const auto value = object->get(key);
+ if (value.isEmpty())
+ Log::error("Missing JSON property: '" + std::string(key) + "'");
+ return value;
+}
+
} // anonymous namespace
StorageBase::FileInfo WopiStorage::getFileInfo(const Poco::URI& uriPublic)
@@ -308,15 +316,18 @@ StorageBase::FileInfo WopiStorage::getFileInfo(const Poco::URI& uriPublic)
Poco::JSON::Parser parser;
const auto result = parser.parse(stringJSON);
const auto& object = result.extract<Poco::JSON::Object::Ptr>();
- filename = object->get("BaseFileName").toString();
- size = std::stoul(object->get("Size").toString(), nullptr, 0);
- const auto userIdVar = object->get("UserId");
+ filename = getOrWarn(object, "BaseFileName").toString();
+ const auto sizeVar = getOrWarn(object, "Size");
+ size = std::stoul(sizeVar.toString(), nullptr, 0);
+ const auto userIdVar = getOrWarn(object, "UserId");
userId = (userIdVar.isString() ? userIdVar.toString() : "");
- const auto userNameVar = object->get("UserFriendlyName");
+ const auto userNameVar = getOrWarn(object,"UserFriendlyName");
userName = (userNameVar.isString() ? userNameVar.toString() : "anonymous");
- const auto canWriteVar = object->get("UserCanWrite");
+ const auto canWriteVar = getOrWarn(object, "UserCanWrite");
canWrite = canWriteVar.isString() ? (canWriteVar.toString() == "true") : false;
}
+ else
+ Log::error("WOPI::CheckFileInfo is missing JSON payload");
// WOPI doesn't support file last modified time.
_fileInfo = FileInfo({filename, Poco::Timestamp(), size, userId, userName, canWrite});
More information about the Libreoffice-commits
mailing list