aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud/dropbox
diff options
context:
space:
mode:
authorAlexander Tkachev2016-05-17 01:19:49 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commit03217cd5c3de3c17739a246f5967dfd4a14eb120 (patch)
treed62ee38b8a5d8146bc7bd7f64b68c3dc8c2291e5 /backends/cloud/dropbox
parent9c22b7cc64a3bd074f7cec012bd2f29f210d4ccf (diff)
downloadscummvm-rg350-03217cd5c3de3c17739a246f5967dfd4a14eb120.tar.gz
scummvm-rg350-03217cd5c3de3c17739a246f5967dfd4a14eb120.tar.bz2
scummvm-rg350-03217cd5c3de3c17739a246f5967dfd4a14eb120.zip
CLOUD: Add CurlJsonRequest
Now we can do REST API request by creating CurlJsonRequest and waiting for it to call our callback. Passed pointer is Common::JSONValue. This commit also does some minor variable renaming fixes.
Diffstat (limited to 'backends/cloud/dropbox')
-rw-r--r--backends/cloud/dropbox/curlrequest.cpp64
-rw-r--r--backends/cloud/dropbox/curlrequest.h50
-rw-r--r--backends/cloud/dropbox/dropboxstorage.cpp20
3 files changed, 14 insertions, 120 deletions
diff --git a/backends/cloud/dropbox/curlrequest.cpp b/backends/cloud/dropbox/curlrequest.cpp
deleted file mode 100644
index ecc868cb51..0000000000
--- a/backends/cloud/dropbox/curlrequest.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
-*
-* ScummVM is the legal property of its developers, whose names
-* are too numerous to list here. Please refer to the COPYRIGHT
-* file distributed with this source distribution.
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-*/
-
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
-
-#include "backends/cloud/dropbox/curlrequest.h"
-#include "backends/networking/curl/networkreadstream.h"
-#include "common/debug.h"
-#include <curl/curl.h>
-
-namespace Cloud {
-namespace Dropbox {
-
-CurlRequest::CurlRequest(Callback cb, const char *url) : Request(cb), _firstTime(true), _stream(0) {
- _url = url;
-}
-
-CurlRequest::~CurlRequest() {
- if (_stream) delete _stream;
-}
-
-bool CurlRequest::handle(Networking::ConnectionManager &manager) {
- if (_firstTime) {
- _stream = manager.makeRequest(_url);
- _firstTime = false;
- }
-
- if (_stream) {
- const int kBufSize = 10000;
- char buf[kBufSize+1];
- uint32 readBytes = _stream->read(buf, kBufSize);
- debug("%d", readBytes);
- //if(readBytes != 0) debug("%s", buf);
-
- if(_stream->eos()) {
- _callback(0);
- return true;
- }
- }
-
- return false;
-}
-
-} //end of namespace Dropbox
-} //end of namespace Cloud
diff --git a/backends/cloud/dropbox/curlrequest.h b/backends/cloud/dropbox/curlrequest.h
deleted file mode 100644
index 3d5d4adb72..0000000000
--- a/backends/cloud/dropbox/curlrequest.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
-*
-* ScummVM is the legal property of its developers, whose names
-* are too numerous to list here. Please refer to the COPYRIGHT
-* file distributed with this source distribution.
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-*/
-
-#ifndef BACKENDS_CLOUD_DROPBOX_CURLREQUEST_H
-#define BACKENDS_CLOUD_DROPBOX_CURLREQUEST_H
-
-#include "backends/cloud/request.h"
-
-namespace Networking {
-class NetworkReadStream;
-}
-
-namespace Cloud {
-namespace Dropbox {
-
-class CurlRequest : public Cloud::Request {
- bool _firstTime;
- const char *_url;
- Networking::NetworkReadStream *_stream;
-
-public:
- CurlRequest(Callback cb, const char *url);
- virtual ~CurlRequest();
-
- virtual bool handle(Networking::ConnectionManager &manager);
-};
-
-} //end of namespace Dropbox
-} //end of namespace Cloud
-
-#endif
diff --git a/backends/cloud/dropbox/dropboxstorage.cpp b/backends/cloud/dropbox/dropboxstorage.cpp
index 9298cde0a1..2db915de38 100644
--- a/backends/cloud/dropbox/dropboxstorage.cpp
+++ b/backends/cloud/dropbox/dropboxstorage.cpp
@@ -22,15 +22,23 @@
#define FORBIDDEN_SYMBOL_ALLOW_ALL
#include "backends/cloud/dropbox/dropboxstorage.h"
-#include "backends/cloud/dropbox/curlrequest.h"
+#include "backends/networking/curl/curljsonrequest.h"
#include "common/debug.h"
+#include "common/json.h"
#include <curl/curl.h>
namespace Cloud {
namespace Dropbox {
-static void curlCallback(void *ptr) {
- debug("--- curl request is complete ---");
+static void curlJsonCallback(void *ptr) {
+ Common::JSONValue *json = (Common::JSONValue *)ptr;
+ if (json) {
+ debug("curlJsonCallback:");
+ debug("%s", json->stringify(true).c_str());
+ delete json;
+ } else {
+ debug("curlJsonCallback: got NULL instead of JSON!");
+ }
}
DropboxStorage::DropboxStorage() {
@@ -45,9 +53,9 @@ void DropboxStorage::listDirectory(Common::String path) {
startTimer(1000000); //in one second
}
-void DropboxStorage::syncSaves() {
- addRequest(new CurlRequest(curlCallback, "tkachov.ru"));
- addRequest(new CurlRequest(curlCallback, "scummvm.org"));
+void DropboxStorage::syncSaves() {
+ //not so Dropbox, just testing JSON requesting & parsing:
+ addRequest(new Networking::CurlJsonRequest(curlJsonCallback, "https://api.vk.com/method/users.get?v=5.50&user_ids=205387401"));
}
} //end of namespace Dropbox