aboutsummaryrefslogtreecommitdiff
path: root/backends/networking/curl
diff options
context:
space:
mode:
authorAlexander Tkachev2016-07-22 18:27:49 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commitcccfe7c247fed9b00c100e64433439386d6ef077 (patch)
tree91316ef86d15857b03aa5be8bafc1321cadc1b8e /backends/networking/curl
parent43c940c98579e669826de838eff9dcb372d453f7 (diff)
downloadscummvm-rg350-cccfe7c247fed9b00c100e64433439386d6ef077.tar.gz
scummvm-rg350-cccfe7c247fed9b00c100e64433439386d6ef077.tar.bz2
scummvm-rg350-cccfe7c247fed9b00c100e64433439386d6ef077.zip
CLOUD: Update BoxListDirectoryByIdRequest
It now uses special CurlJsonRequest static methods to check whether JSON is an object, has a string or integer parameter.
Diffstat (limited to 'backends/networking/curl')
-rw-r--r--backends/networking/curl/curljsonrequest.cpp41
-rw-r--r--backends/networking/curl/curljsonrequest.h4
2 files changed, 44 insertions, 1 deletions
diff --git a/backends/networking/curl/curljsonrequest.cpp b/backends/networking/curl/curljsonrequest.cpp
index 875f5e7fbd..7f7cbca2e0 100644
--- a/backends/networking/curl/curljsonrequest.cpp
+++ b/backends/networking/curl/curljsonrequest.cpp
@@ -31,7 +31,7 @@
namespace Networking {
-CurlJsonRequest::CurlJsonRequest(JsonCallback cb, ErrorCallback ecb, Common::String url):
+CurlJsonRequest::CurlJsonRequest(JsonCallback cb, ErrorCallback ecb, Common::String url) :
CurlRequest(nullptr, ecb, url), _jsonCallback(cb), _contentsStream(DisposeAfterUse::YES),
_buffer(new byte[CURL_JSON_REQUEST_BUFFER_SIZE]) {}
@@ -97,4 +97,43 @@ void CurlJsonRequest::finishJson(Common::JSONValue *json) {
else delete json;
}
+bool CurlJsonRequest::jsonIsObject(Common::JSONValue *item, const char *warningPrefix) {
+ if (item == nullptr) {
+ warning("%s: passed item is NULL", warningPrefix);
+ return false;
+ }
+
+ if (item->isObject()) return true;
+
+ warning("%s: passed item is not an object!", warningPrefix);
+ debug(9, "%s", item->stringify(true).c_str());
+ return false;
+}
+
+bool CurlJsonRequest::jsonContainsString(Common::JSONObject &item, const char *key, const char *warningPrefix) {
+ if (!item.contains(key)) {
+ warning("%s: passed item misses the \"%s\" attribute!", warningPrefix, key);
+ return false;
+ }
+
+ if (item.getVal(key)->isString()) return true;
+
+ warning("%s: passed item's \"%s\" attribute is not a string!", warningPrefix, key);
+ debug(9, "%s", item.getVal(key)->stringify(true).c_str());
+ return false;
+}
+
+bool CurlJsonRequest::jsonContainsIntegerNumber(Common::JSONObject &item, const char *key, const char *warningPrefix) {
+ if (!item.contains(key)) {
+ warning("%s: passed item misses the \"%s\" attribute!", warningPrefix, key);
+ return false;
+ }
+
+ if (item.getVal(key)->isIntegerNumber()) return true;
+
+ warning("%s: passed item's \"%s\" attribute is not an integer!", warningPrefix, key);
+ debug(9, "%s", item.getVal(key)->stringify(true).c_str());
+ return false;
+}
+
} // End of namespace Networking
diff --git a/backends/networking/curl/curljsonrequest.h b/backends/networking/curl/curljsonrequest.h
index 7858c89b80..1d1409efc8 100644
--- a/backends/networking/curl/curljsonrequest.h
+++ b/backends/networking/curl/curljsonrequest.h
@@ -52,6 +52,10 @@ public:
virtual void handle();
virtual void restart();
+
+ static bool jsonIsObject(Common::JSONValue *item, const char *warningPrefix);
+ static bool jsonContainsString(Common::JSONObject &item, const char *key, const char *warningPrefix);
+ static bool jsonContainsIntegerNumber(Common::JSONObject &item, const char *key, const char *warningPrefix);
};
} // End of namespace Networking