diff options
Diffstat (limited to 'backends/cloud/googledrive/googledrivecreatedirectoryrequest.cpp')
-rw-r--r-- | backends/cloud/googledrive/googledrivecreatedirectoryrequest.cpp | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/backends/cloud/googledrive/googledrivecreatedirectoryrequest.cpp b/backends/cloud/googledrive/googledrivecreatedirectoryrequest.cpp deleted file mode 100644 index 9e339fd999..0000000000 --- a/backends/cloud/googledrive/googledrivecreatedirectoryrequest.cpp +++ /dev/null @@ -1,146 +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/googledrive/googledrivecreatedirectoryrequest.h" -#include "backends/cloud/googledrive/googledrivestorage.h" -#include "common/debug.h" - -namespace Cloud { -namespace GoogleDrive { - -GoogleDriveCreateDirectoryRequest::GoogleDriveCreateDirectoryRequest(GoogleDriveStorage *storage, Common::String parentPath, Common::String directoryName, Storage::BoolCallback cb, Networking::ErrorCallback ecb): - Networking::Request(nullptr, ecb), - _requestedParentPath(parentPath), _requestedDirectoryName(directoryName), _storage(storage), _boolCallback(cb), - _workingRequest(nullptr), _ignoreCallback(false) { - start(); -} - -GoogleDriveCreateDirectoryRequest::~GoogleDriveCreateDirectoryRequest() { - _ignoreCallback = true; - if (_workingRequest) _workingRequest->finish(); - delete _boolCallback; -} - -void GoogleDriveCreateDirectoryRequest::start() { - //cleanup - _ignoreCallback = true; - if (_workingRequest) _workingRequest->finish(); - _workingRequest = nullptr; - _ignoreCallback = false; - - //the only exception when we create parent folder - is when it's ScummVM/ base folder - Common::String prefix = _requestedParentPath; - if (prefix.size() > 7) prefix.erase(7); - if (prefix.equalsIgnoreCase("ScummVM")) { - Storage::BoolCallback callback = new Common::Callback<GoogleDriveCreateDirectoryRequest, Storage::BoolResponse>(this, &GoogleDriveCreateDirectoryRequest::createdBaseDirectoryCallback); - Networking::ErrorCallback failureCallback = new Common::Callback<GoogleDriveCreateDirectoryRequest, Networking::ErrorResponse>(this, &GoogleDriveCreateDirectoryRequest::createdBaseDirectoryErrorCallback); - _workingRequest = _storage->createDirectory("ScummVM", callback, failureCallback); - return; - } - - resolveId(); -} - -void GoogleDriveCreateDirectoryRequest::createdBaseDirectoryCallback(Storage::BoolResponse response) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (response.request) _date = response.request->date(); - resolveId(); -} - -void GoogleDriveCreateDirectoryRequest::createdBaseDirectoryErrorCallback(Networking::ErrorResponse error) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (error.request) _date = error.request->date(); - finishError(error); -} - -void GoogleDriveCreateDirectoryRequest::resolveId() { - //check whether such folder already exists - Storage::UploadCallback innerCallback = new Common::Callback<GoogleDriveCreateDirectoryRequest, Storage::UploadResponse>(this, &GoogleDriveCreateDirectoryRequest::idResolvedCallback); - Networking::ErrorCallback innerErrorCallback = new Common::Callback<GoogleDriveCreateDirectoryRequest, Networking::ErrorResponse>(this, &GoogleDriveCreateDirectoryRequest::idResolveFailedCallback); - Common::String path = _requestedParentPath; - if (_requestedParentPath != "") path += "/"; - path += _requestedDirectoryName; - _workingRequest = _storage->resolveFileId(path, innerCallback, innerErrorCallback); -} - -void GoogleDriveCreateDirectoryRequest::idResolvedCallback(Storage::UploadResponse response) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (response.request) _date = response.request->date(); - - //resolved => folder already exists - finishCreation(false); -} - -void GoogleDriveCreateDirectoryRequest::idResolveFailedCallback(Networking::ErrorResponse error) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (error.request) _date = error.request->date(); - - //not resolved => folder not exists - if (error.response.contains("no such file found in its parent directory")) { - //parent's id after the '\n' - Common::String parentId = error.response; - for (uint32 i = 0; i < parentId.size(); ++i) - if (parentId[i] == '\n') { - parentId.erase(0, i+1); - break; - } - - Storage::BoolCallback callback = new Common::Callback<GoogleDriveCreateDirectoryRequest, Storage::BoolResponse>(this, &GoogleDriveCreateDirectoryRequest::createdDirectoryCallback); - Networking::ErrorCallback failureCallback = new Common::Callback<GoogleDriveCreateDirectoryRequest, Networking::ErrorResponse>(this, &GoogleDriveCreateDirectoryRequest::createdDirectoryErrorCallback); - _workingRequest = _storage->createDirectoryWithParentId(parentId, _requestedDirectoryName, callback, failureCallback); - return; - } - - finishError(error); -} - -void GoogleDriveCreateDirectoryRequest::createdDirectoryCallback(Storage::BoolResponse response) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (response.request) _date = response.request->date(); - finishCreation(response.value); -} - -void GoogleDriveCreateDirectoryRequest::createdDirectoryErrorCallback(Networking::ErrorResponse error) { - _workingRequest = nullptr; - if (_ignoreCallback) return; - if (error.request) _date = error.request->date(); - finishError(error); -} - -void GoogleDriveCreateDirectoryRequest::handle() {} - -void GoogleDriveCreateDirectoryRequest::restart() { start(); } - -Common::String GoogleDriveCreateDirectoryRequest::date() const { return _date; } - -void GoogleDriveCreateDirectoryRequest::finishCreation(bool success) { - Request::finishSuccess(); - if (_boolCallback) (*_boolCallback)(Storage::BoolResponse(this, success)); -} - -} // End of namespace GoogleDrive -} // End of namespace Cloud |