diff options
Diffstat (limited to 'backends/cloud/box/boxlistdirectoryrequest.cpp')
-rw-r--r-- | backends/cloud/box/boxlistdirectoryrequest.cpp | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/backends/cloud/box/boxlistdirectoryrequest.cpp b/backends/cloud/box/boxlistdirectoryrequest.cpp deleted file mode 100644 index b35c8c80d5..0000000000 --- a/backends/cloud/box/boxlistdirectoryrequest.cpp +++ /dev/null @@ -1,129 +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. -* -*/ - -#include "backends/cloud/box/boxlistdirectoryrequest.h" -#include "backends/cloud/box/boxstorage.h" - -namespace Cloud { -namespace Box { - -BoxListDirectoryRequest::BoxListDirectoryRequest(BoxStorage *storage, Common::String path, Storage::ListDirectoryCallback cb, Networking::ErrorCallback ecb, bool recursive): - Networking::Request(nullptr, ecb), - _requestedPath(path), _requestedRecursive(recursive), _storage(storage), _listDirectoryCallback(cb), - _workingRequest(nullptr), _ignoreCallback(false) { - start(); -} - -BoxListDirectoryRequest::~BoxListDirectoryRequest() { - _ignoreCallback = true; - if (_workingRequest) _workingRequest->finish(); - delete _listDirectoryCallback; -} - -void BoxListDirectoryRequest::start() { - //cleanup - _ignoreCallback = true; - if (_workingRequest) _workingRequest->finish(); - _workingRequest = nullptr; - _files.clear(); - _directoriesQueue.clear(); - _currentDirectory = StorageFile(); - _ignoreCallback = false; - - //find out that directory's id - Storage::UploadCallback innerCallback = new Common::Callback<BoxListDirectoryRequest, Storage::UploadResponse>(this, &BoxListDirectoryRequest::idResolvedCallback); - Networking::ErrorCallback innerErrorCallback = new Common::Callback<BoxListDirectoryRequest, Networking::ErrorResponse>(this, &BoxListDirectoryRequest::idResolveErrorCallback); - _workingRequest = _storage->resolveFileId(_requestedPath, innerCallback, innerErrorCallback); -} - -void BoxListDirectoryRequest::idResolvedCallback(Storage::UploadResponse response) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (response.request) _date = response.request->date(); - - StorageFile directory = response.value; - directory.setPath(_requestedPath); - _directoriesQueue.push_back(directory); - listNextDirectory(); -} - -void BoxListDirectoryRequest::idResolveErrorCallback(Networking::ErrorResponse error) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (error.request) _date = error.request->date(); - finishError(error); -} - -void BoxListDirectoryRequest::listNextDirectory() { - if (_directoriesQueue.empty()) { - finishListing(_files); - return; - } - - _currentDirectory = _directoriesQueue.back(); - _directoriesQueue.pop_back(); - - Storage::FileArrayCallback callback = new Common::Callback<BoxListDirectoryRequest, Storage::FileArrayResponse>(this, &BoxListDirectoryRequest::listedDirectoryCallback); - Networking::ErrorCallback failureCallback = new Common::Callback<BoxListDirectoryRequest, Networking::ErrorResponse>(this, &BoxListDirectoryRequest::listedDirectoryErrorCallback); - _workingRequest = _storage->listDirectoryById(_currentDirectory.id(), callback, failureCallback); -} - -void BoxListDirectoryRequest::listedDirectoryCallback(Storage::FileArrayResponse response) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (response.request) _date = response.request->date(); - - for (uint32 i = 0; i < response.value.size(); ++i) { - StorageFile &file = response.value[i]; - Common::String path = _currentDirectory.path(); - if (path.size() && path.lastChar() != '/' && path.lastChar() != '\\') path += '/'; - path += file.name(); - file.setPath(path); - _files.push_back(file); - if (_requestedRecursive && file.isDirectory()) { - _directoriesQueue.push_back(file); - } - } - - listNextDirectory(); -} - -void BoxListDirectoryRequest::listedDirectoryErrorCallback(Networking::ErrorResponse error) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (error.request) _date = error.request->date(); - finishError(error); -} - -void BoxListDirectoryRequest::handle() {} - -void BoxListDirectoryRequest::restart() { start(); } - -Common::String BoxListDirectoryRequest::date() const { return _date; } - -void BoxListDirectoryRequest::finishListing(Common::Array<StorageFile> &files) { - Request::finishSuccess(); - if (_listDirectoryCallback) (*_listDirectoryCallback)(Storage::ListDirectoryResponse(this, files)); -} - -} // End of namespace Box -} // End of namespace Cloud |