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_GOOGLEDRIVE_GOOGLEDRIVELISTDIRECTORYBYIDREQUEST_H 00024 #define BACKENDS_CLOUD_GOOGLEDRIVE_GOOGLEDRIVELISTDIRECTORYBYIDREQUEST_H 00025 00026 #include "backends/cloud/storage.h" 00027 #include "backends/networking/curl/request.h" 00028 #include "common/callback.h" 00029 #include "backends/networking/curl/curljsonrequest.h" 00030 00031 namespace Cloud { 00032 namespace GoogleDrive { 00033 00034 class GoogleDriveStorage; 00035 00036 class GoogleDriveListDirectoryByIdRequest: public Networking::Request { 00037 Common::String _requestedId; 00038 GoogleDriveStorage *_storage; 00039 00040 Storage::ListDirectoryCallback _listDirectoryCallback; 00041 Common::Array<StorageFile> _files; 00042 Request *_workingRequest; 00043 bool _ignoreCallback; 00044 Common::String _date; 00045 00046 void start(); 00047 void makeRequest(Common::String pageToken); 00048 void responseCallback(Networking::JsonResponse response); 00049 void errorCallback(Networking::ErrorResponse error); 00050 void finishListing(Common::Array<StorageFile> &files); 00051 public: 00052 GoogleDriveListDirectoryByIdRequest(GoogleDriveStorage *storage, Common::String id, Storage::ListDirectoryCallback cb, Networking::ErrorCallback ecb); 00053 virtual ~GoogleDriveListDirectoryByIdRequest(); 00054 00055 virtual void handle(); 00056 virtual void restart(); 00057 virtual Common::String date() const; 00058 }; 00059 00060 } // End of namespace GoogleDrive 00061 } // End of namespace Cloud 00062 00063 #endif