From 03217cd5c3de3c17739a246f5967dfd4a14eb120 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Tue, 17 May 2016 01:19:49 +0600 Subject: 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. --- backends/cloud/dropbox/curlrequest.cpp | 64 ------------------------------- backends/cloud/dropbox/curlrequest.h | 50 ------------------------ backends/cloud/dropbox/dropboxstorage.cpp | 20 +++++++--- 3 files changed, 14 insertions(+), 120 deletions(-) delete mode 100644 backends/cloud/dropbox/curlrequest.cpp delete mode 100644 backends/cloud/dropbox/curlrequest.h (limited to 'backends/cloud/dropbox') 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 - -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 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 -- cgit v1.2.3