00001 /* ScummVM - Graphic Adventure Engine 00002 * 00003 * ScummVM is the legal property of its developers, whose names 00004 * are too numerous to list here. Please refer to the COPYRIGHT 00005 * file distributed with this source distribution. 00006 * 00007 * This program is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU General Public License 00009 * as published by the Free Software Foundation; either version 2 00010 * of the License, or (at your option) any later version. 00011 * 00012 * This program is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with this program; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00020 * 00021 */ 00022 00023 #ifndef BACKENDS_CLOUD_ONEDRIVE_ONEDRIVEUPLOADREQUEST_H 00024 #define BACKENDS_CLOUD_ONEDRIVE_ONEDRIVEUPLOADREQUEST_H 00025 00026 #include "backends/cloud/storage.h" 00027 #include "backends/networking/curl/curljsonrequest.h" 00028 #include "backends/networking/curl/request.h" 00029 #include "common/callback.h" 00030 00031 namespace Cloud { 00032 namespace OneDrive { 00033 class OneDriveStorage; 00034 00035 class OneDriveUploadRequest: public Networking::Request { 00036 OneDriveStorage *_storage; 00037 Common::String _savePath; 00038 Common::SeekableReadStream *_contentsStream; 00039 Storage::UploadCallback _uploadCallback; 00040 Request *_workingRequest; 00041 bool _ignoreCallback; 00042 Common::String _uploadUrl; 00043 00044 void start(); 00045 void uploadNextPart(); 00046 void partUploadedCallback(Networking::JsonResponse response); 00047 void partUploadedErrorCallback(Networking::ErrorResponse error); 00048 void finishUpload(StorageFile status); 00049 00050 public: 00051 OneDriveUploadRequest(OneDriveStorage *storage, Common::String path, Common::SeekableReadStream *contents, Storage::UploadCallback callback, Networking::ErrorCallback ecb); 00052 virtual ~OneDriveUploadRequest(); 00053 00054 virtual void handle(); 00055 virtual void restart(); 00056 }; 00057 00058 } // End of namespace OneDrive 00059 } // End of namespace Cloud 00060 00061 #endif