15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback_forward.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/time/time.h" 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "google_apis/drive/base_requests.h" 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "google_apis/drive/drive_api_url_generator.h" 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "google_apis/drive/drive_common_callbacks.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace google_apis { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class ChangeList; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FileResource; 20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class FileList; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Callback used for requests that the server returns FileResource data 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// formatted into JSON value. 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef base::Callback<void(GDataErrorCode error, 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<FileResource> entry)> 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FileResourceCallback; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Callback used for requests that the server returns FileList data 29424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// formatted into JSON value. 30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)typedef base::Callback<void(GDataErrorCode error, 31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) scoped_ptr<FileList> entry)> FileListCallback; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Callback used for requests that the server returns ChangeList data 34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// formatted into JSON value. 35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)typedef base::Callback<void(GDataErrorCode error, 36424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) scoped_ptr<ChangeList> entry)> ChangeListCallback; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace drive { 39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//============================ DriveApiDataRequest =========================== 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// This is base class of the Drive API related requests. All Drive API requests 4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// support partial request (to improve the performance). The function can be 4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// shared among the Drive API requests. 4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// See also https://developers.google.com/drive/performance 4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class DriveApiDataRequest : public GetDataRequest { 4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public: 4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) DriveApiDataRequest(RequestSender* sender, const GetDataCallback& callback); 4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual ~DriveApiDataRequest(); 5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 5168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Optional parameter. 5268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const std::string& fields() const { return fields_; } 5368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void set_fields(const std::string& fields) { fields_ = fields; } 5468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 5568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) protected: 5668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from GetDataRequest. 5768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURL() const OVERRIDE; 5868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 5968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Derived classes should override GetURLInternal instead of GetURL() 6068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // directly. 6168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const = 0; 6268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 6368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) private: 6468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::string fields_; 6568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DriveApiDataRequest); 6768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}; 6868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 69424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)//=============================== FilesGetRequest ============================= 70424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 71424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for fetching a file. 72424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 73424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/files/get 7468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class FilesGetRequest : public DriveApiDataRequest { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 76424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FilesGetRequest(RequestSender* sender, 77868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 78424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const FileResourceCallback& callback); 79424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~FilesGetRequest(); 80424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 81424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Required parameter. 82424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& file_id() const { return file_id_; } 83424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_file_id(const std::string& file_id) { file_id_ = file_id; } 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 8668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 8768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 91424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string file_id_; 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 93424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FilesGetRequest); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 96424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)//============================ FilesInsertRequest ============================= 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 98424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for creating a resource. 99424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 100424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/files/insert 101424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// See also https://developers.google.com/drive/manage-uploads and 102424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/folder 10368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class FilesInsertRequest : public DriveApiDataRequest { 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 105424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FilesInsertRequest(RequestSender* sender, 106424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 107424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const FileResourceCallback& callback); 108424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~FilesInsertRequest(); 109424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 110424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Optional request body. 111424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& mime_type() const { return mime_type_; } 112424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_mime_type(const std::string& mime_type) { 113424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) mime_type_ = mime_type; 114424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 115424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 116424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::vector<std::string>& parents() const { return parents_; } 117424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void add_parent(const std::string& parent) { parents_.push_back(parent); } 118424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 119424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& title() const { return title_; } 120424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_title(const std::string& title) { title_ = title; } 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 123868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Overridden from GetDataRequest. 124424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 125424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual bool GetContentData(std::string* upload_content_type, 126424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string* upload_content) OVERRIDE; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 12968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 13068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 134424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string mime_type_; 135424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::vector<std::string> parents_; 136424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string title_; 137424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 138424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FilesInsertRequest); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 141424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)//============================== FilesPatchRequest ============================ 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 143424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for patching file metadata. 144424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 145424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/files/patch 14668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class FilesPatchRequest : public DriveApiDataRequest { 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 148424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FilesPatchRequest(RequestSender* sender, 149424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 150424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const FileResourceCallback& callback); 151424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~FilesPatchRequest(); 152424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 153424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Required parameter. 154424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& file_id() const { return file_id_; } 155424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_file_id(const std::string& file_id) { file_id_ = file_id; } 156424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 157424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Optional parameter. 158424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool set_modified_date() const { return set_modified_date_; } 159424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_set_modified_date(bool set_modified_date) { 160424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) set_modified_date_ = set_modified_date; 161424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 162424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 163424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool update_viewed_date() const { return update_viewed_date_; } 164424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_update_viewed_date(bool update_viewed_date) { 165424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) update_viewed_date_ = update_viewed_date; 166424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 167424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 168424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Optional request body. 169424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Note: "Files: patch" accepts any "Files resource" data, but this class 170424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // only supports limited members of it for now. We can extend it upon 171424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // requirments. 172424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& title() const { return title_; } 173424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_title(const std::string& title) { title_ = title; } 174424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 175424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const base::Time& modified_date() const { return modified_date_; } 176424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_modified_date(const base::Time& modified_date) { 177424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) modified_date_ = modified_date; 178424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 179424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 180424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const base::Time& last_viewed_by_me_date() const { 181424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return last_viewed_by_me_date_; 182424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 183424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_last_viewed_by_me_date(const base::Time& last_viewed_by_me_date) { 184424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) last_viewed_by_me_date_ = last_viewed_by_me_date; 185424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 186424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 187424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::vector<std::string>& parents() const { return parents_; } 188424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void add_parent(const std::string& parent) { parents_.push_back(parent); } 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 19168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from URLFetchRequestBase. 192424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 193424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; 194424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual bool GetContentData(std::string* upload_content_type, 195424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string* upload_content) OVERRIDE; 196424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 19768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 19868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 19968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 200424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) private: 201424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator url_generator_; 202424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 203424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string file_id_; 204424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool set_modified_date_; 205424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool update_viewed_date_; 206424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 207424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string title_; 208424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::Time modified_date_; 209424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::Time last_viewed_by_me_date_; 210424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::vector<std::string> parents_; 211424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 212424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FilesPatchRequest); 213424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}; 214424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 215424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)//============================= FilesCopyRequest ============================== 216424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 217424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for copying a resource. 218424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 219424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/files/copy 22068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class FilesCopyRequest : public DriveApiDataRequest { 221424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) public: 222424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Upon completion, |callback| will be called. |callback| must not be null. 223424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FilesCopyRequest(RequestSender* sender, 224424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 225424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const FileResourceCallback& callback); 226424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~FilesCopyRequest(); 227424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 228424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Required parameter. 229424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& file_id() const { return file_id_; } 230424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_file_id(const std::string& file_id) { file_id_ = file_id; } 231424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 232424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Optional request body. 233424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::vector<std::string>& parents() const { return parents_; } 234424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void add_parent(const std::string& parent) { parents_.push_back(parent); } 235424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 23668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const base::Time& modified_date() const { return modified_date_; } 23768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void set_modified_date(const base::Time& modified_date) { 23868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) modified_date_ = modified_date; 23968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 24068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 241424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& title() const { return title_; } 242424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_title(const std::string& title) { title_ = title; } 243424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 244424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) protected: 24568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from URLFetchRequestBase. 246424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 247424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual bool GetContentData(std::string* upload_content_type, 248424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string* upload_content) OVERRIDE; 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 25168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 25268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 256424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string file_id_; 25768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::Time modified_date_; 258424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::vector<std::string> parents_; 259424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string title_; 260424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 261424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FilesCopyRequest); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 264424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)//============================= FilesListRequest ============================= 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 266424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for fetching FileList. 267c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// The result may contain only first part of the result. The remaining result 268424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// should be able to be fetched by ContinueGetFileListRequest defined below, 269424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// or by FilesListRequest with setting page token. 270424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 271424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/files/list 27268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class FilesListRequest : public DriveApiDataRequest { 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 274424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FilesListRequest(RequestSender* sender, 275424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 276424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const FileListCallback& callback); 277424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~FilesListRequest(); 278424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 279424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Optional parameter 280424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int max_results() const { return max_results_; } 281424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_max_results(int max_results) { max_results_ = max_results; } 282424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 283424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& page_token() const { return page_token_; } 284424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_page_token(const std::string& page_token) { 285424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) page_token_ = page_token; 286424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 287424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 288424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& q() const { return q_; } 289424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_q(const std::string& q) { q_ = q; } 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 29268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 29368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 297424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int max_results_; 298424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string page_token_; 299424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string q_; 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 301424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FilesListRequest); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)//========================= FilesListNextPageRequest ========================== 30558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 30658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// There are two ways to obtain next pages of "Files: list" result (if paged). 30758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// 1) Set pageToken and all params used for the initial request. 30858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// 2) Use URL in the nextLink field in the previous response. 30958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// This class implements 2)'s request. 31068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class FilesListNextPageRequest : public DriveApiDataRequest { 31158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 31258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FilesListNextPageRequest(RequestSender* sender, 31358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const FileListCallback& callback); 31458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~FilesListNextPageRequest(); 31558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 31658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GURL& next_link() const { return next_link_; } 31758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void set_next_link(const GURL& next_link) { next_link_ = next_link; } 31858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 31958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) protected: 32068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 32168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 32258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 32358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 32458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL next_link_; 32558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 32658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FilesListNextPageRequest); 32758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 32858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 329d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)//============================= FilesDeleteRequest ============================= 330d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) 331d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)// This class performs the request for deleting a resource. 332d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)// This request is mapped to 333d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/files/delete 334d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)class FilesDeleteRequest : public EntryActionRequest { 335d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) public: 336d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) FilesDeleteRequest(RequestSender* sender, 337d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 338d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) const EntryActionCallback& callback); 339d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) virtual ~FilesDeleteRequest(); 340d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) 341d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) // Required parameter. 342d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) const std::string& file_id() const { return file_id_; } 343d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) void set_file_id(const std::string& file_id) { file_id_ = file_id; } 344d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) void set_etag(const std::string& etag) { etag_ = etag; } 345d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) 346d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) protected: 347d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) // Overridden from UrlFetchRequestBase. 348d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 349d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) virtual GURL GetURL() const OVERRIDE; 350d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; 351d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) 352d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) private: 353d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) const DriveApiUrlGenerator url_generator_; 354d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) std::string file_id_; 355d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) std::string etag_; 356d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) 357d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FilesDeleteRequest); 358d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)}; 359d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles) 360d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)//============================= FilesTrashRequest ============================== 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 362424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for trashing a resource. 363424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 364424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/files/trash 36568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class FilesTrashRequest : public DriveApiDataRequest { 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 367424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FilesTrashRequest(RequestSender* sender, 368424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 369424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const FileResourceCallback& callback); 370424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~FilesTrashRequest(); 371424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 372424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Required parameter. 373424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& file_id() const { return file_id_; } 374424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_file_id(const std::string& file_id) { file_id_ = file_id; } 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 37768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from UrlFetchRequestBase. 378424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 37968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 38068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 38168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string file_id_; 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 387424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FilesTrashRequest); 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 390424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)//============================== AboutGetRequest ============================= 391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 392424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for fetching About data. 393424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 394424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/about/get 39568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class AboutGetRequest : public DriveApiDataRequest { 396c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 397424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) AboutGetRequest(RequestSender* sender, 398424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 399424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const AboutResourceCallback& callback); 400424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~AboutGetRequest(); 401c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 402c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 40368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 40468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 405c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 406c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 407424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator url_generator_; 408c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 409424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AboutGetRequest); 410424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}; 411424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 412424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)//============================ ChangesListRequest ============================ 413424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 414424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for fetching ChangeList. 415424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// The result may contain only first part of the result. The remaining result 416424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// should be able to be fetched by ContinueGetFileListRequest defined below. 417424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// or by ChangesListRequest with setting page token. 418424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 419424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/changes/list 42068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class ChangesListRequest : public DriveApiDataRequest { 421424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) public: 422424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ChangesListRequest(RequestSender* sender, 423424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 424424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const ChangeListCallback& callback); 425424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~ChangesListRequest(); 426424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 427424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Optional parameter 428424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool include_deleted() const { return include_deleted_; } 429424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_include_deleted(bool include_deleted) { 430424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) include_deleted_ = include_deleted; 431424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 432424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 433424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int max_results() const { return max_results_; } 434424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_max_results(int max_results) { max_results_ = max_results; } 435424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 436424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& page_token() const { return page_token_; } 437424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_page_token(const std::string& page_token) { 438424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) page_token_ = page_token; 439424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 440424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 441424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int64 start_change_id() const { return start_change_id_; } 442424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void set_start_change_id(int64 start_change_id) { 443424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) start_change_id_ = start_change_id; 444424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 445424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 446424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) protected: 44768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 44868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 449424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 450424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) private: 451424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator url_generator_; 452424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool include_deleted_; 453424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int max_results_; 454424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::string page_token_; 455424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int64 start_change_id_; 456424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 457424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChangesListRequest); 458c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 459c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 46058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)//======================== ChangesListNextPageRequest ========================= 46158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 46258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// There are two ways to obtain next pages of "Changes: list" result (if paged). 46358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// 1) Set pageToken and all params used for the initial request. 46458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// 2) Use URL in the nextLink field in the previous response. 46558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// This class implements 2)'s request. 46668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class ChangesListNextPageRequest : public DriveApiDataRequest { 46758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 46858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ChangesListNextPageRequest(RequestSender* sender, 46958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const ChangeListCallback& callback); 47058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~ChangesListNextPageRequest(); 47158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 47258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GURL& next_link() const { return next_link_; } 47358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void set_next_link(const GURL& next_link) { next_link_ = next_link; } 47458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 47558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) protected: 47668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 47768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 47858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 47958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 48058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL next_link_; 48158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 48258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChangesListNextPageRequest); 48358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 48458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 485424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)//============================= AppsListRequest ============================ 4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 487424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This class performs the request for fetching AppList. 488424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// This request is mapped to 489424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// https://developers.google.com/drive/v2/reference/apps/list 49068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class AppsListRequest : public DriveApiDataRequest { 4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 492424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) AppsListRequest(RequestSender* sender, 493424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const DriveApiUrlGenerator& url_generator, 494424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const AppListCallback& callback); 495424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~AppsListRequest(); 4962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 49868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Overridden from DriveApiDataRequest. 49968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual GURL GetURLInternal() const OVERRIDE; 5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 5022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 5032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 504424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppsListRequest); 505424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}; 506424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 50758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)//========================== ChildrenInsertRequest ============================ 508424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 50958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// This class performs the request for inserting a resource to a directory. 51058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// This request is mapped to 51158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// https://developers.google.com/drive/v2/reference/children/insert 51258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class ChildrenInsertRequest : public EntryActionRequest { 513424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) public: 51458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ChildrenInsertRequest(RequestSender* sender, 51558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const DriveApiUrlGenerator& url_generator, 51658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const EntryActionCallback& callback); 51758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~ChildrenInsertRequest(); 5182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 51958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Required parameter. 52058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& folder_id() const { return folder_id_; } 52158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void set_folder_id(const std::string& folder_id) { 52258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) folder_id_ = folder_id; 52358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 52490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 52558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Required body. 52658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& id() const { return id_; } 52758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void set_id(const std::string& id) { id_ = id; } 52890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 52990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) protected: 530868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // UrlFetchRequestBase overrides. 53190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 53290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual GURL GetURL() const OVERRIDE; 53390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual bool GetContentData(std::string* upload_content_type, 53490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::string* upload_content) OVERRIDE; 53590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 53690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private: 53790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 53858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string folder_id_; 53958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string id_; 54090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 54158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChildrenInsertRequest); 5423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 5433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 54458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)//========================== ChildrenDeleteRequest ============================ 5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 54658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// This class performs the request for removing a resource from a directory. 54758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// This request is mapped to 54858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// https://developers.google.com/drive/v2/reference/children/delete 54958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class ChildrenDeleteRequest : public EntryActionRequest { 5502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 5512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |callback| must not be null. 55258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ChildrenDeleteRequest(RequestSender* sender, 553eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const DriveApiUrlGenerator& url_generator, 554eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const EntryActionCallback& callback); 55558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~ChildrenDeleteRequest(); 5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 55758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Required parameter. 55858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& child_id() const { return child_id_; } 55958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void set_child_id(const std::string& child_id) { 56058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) child_id_ = child_id; 56158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 5622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 56358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& folder_id() const { return folder_id_; } 56458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void set_folder_id(const std::string& folder_id) { 56558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) folder_id_ = folder_id; 56658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 569868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // UrlFetchRequestBase overrides. 5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 57158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual GURL GetURL() const OVERRIDE; 5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 57558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string child_id_; 57658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string folder_id_; 5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 57858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChildrenDeleteRequest); 5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 5802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 581868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)//======================= InitiateUploadNewFileRequest ======================= 5822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 583868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// This class performs the request for initiating the upload of a new file. 584868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class InitiateUploadNewFileRequest : public InitiateUploadRequestBase { 5852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 5862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |parent_resource_id| should be the resource id of the parent directory. 5872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |title| should be set. 588868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // See also the comments of InitiateUploadRequestBase for more details 5892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // about the other parameters. 590eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InitiateUploadNewFileRequest(RequestSender* sender, 591eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const DriveApiUrlGenerator& url_generator, 592eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& content_type, 593eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 content_length, 594eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& parent_resource_id, 595eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& title, 596eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const InitiateUploadCallback& callback); 597868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~InitiateUploadNewFileRequest(); 5982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 600868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // UrlFetchRequestBase overrides. 6012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual GURL GetURL() const OVERRIDE; 6022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 6032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool GetContentData(std::string* upload_content_type, 6042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string* upload_content) OVERRIDE; 6052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 6072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 6082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string parent_resource_id_; 6092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string title_; 6102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 611868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(InitiateUploadNewFileRequest); 6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 6132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 614868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)//==================== InitiateUploadExistingFileRequest ===================== 6152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 616868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// This class performs the request for initiating the upload of an existing 6172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// file. 61858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class InitiateUploadExistingFileRequest : public InitiateUploadRequestBase { 6192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 6202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |upload_url| should be the upload_url() of the file 6212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // (resumable-create-media URL) 6222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |etag| should be set if it is available to detect the upload confliction. 623868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // See also the comments of InitiateUploadRequestBase for more details 6242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // about the other parameters. 625eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InitiateUploadExistingFileRequest(RequestSender* sender, 626eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const DriveApiUrlGenerator& url_generator, 627eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& content_type, 628eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 content_length, 629eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& resource_id, 630eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& etag, 631eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const InitiateUploadCallback& callback); 632868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~InitiateUploadExistingFileRequest(); 6332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 635868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // UrlFetchRequestBase overrides. 6362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual GURL GetURL() const OVERRIDE; 6372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; 6382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; 6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 6412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DriveApiUrlGenerator url_generator_; 6422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string resource_id_; 6432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string etag_; 6442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 645868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(InitiateUploadExistingFileRequest); 6462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 6472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 64890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Callback used for ResumeUpload() and GetUploadStatus(). 6492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef base::Callback<void( 6502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const UploadRangeResponse& response, 6512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<FileResource> new_resource)> UploadRangeCallback; 6522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 653868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)//============================ ResumeUploadRequest =========================== 6542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 655868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Performs the request for resuming the upload of a file. 656868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class ResumeUploadRequest : public ResumeUploadRequestBase { 6572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 658868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // See also ResumeUploadRequestBase's comment for parameters meaning. 659c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // |callback| must not be null. |progress_callback| may be null. 660eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ResumeUploadRequest(RequestSender* sender, 661eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GURL& upload_location, 662eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 start_position, 663eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 end_position, 664eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 content_length, 665eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& content_type, 666eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::FilePath& local_file_path, 667eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const UploadRangeCallback& callback, 668eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const ProgressCallback& progress_callback); 669868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~ResumeUploadRequest(); 6702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 672868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // UploadRangeRequestBase overrides. 673868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void OnRangeRequestComplete( 6742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const UploadRangeResponse& response, 6752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::Value> value) OVERRIDE; 676c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // content::UrlFetcherDelegate overrides. 677c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void OnURLFetchUploadProgress(const net::URLFetcher* source, 678c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int64 current, int64 total) OVERRIDE; 6792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 6812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const UploadRangeCallback callback_; 682c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ProgressCallback progress_callback_; 6832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 684868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ResumeUploadRequest); 6852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 6862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 687868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)//========================== GetUploadStatusRequest ========================== 68890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 689868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Performs the request to fetch the current upload status of a file. 690868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class GetUploadStatusRequest : public GetUploadStatusRequestBase { 69190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public: 692868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // See also GetUploadStatusRequestBase's comment for parameters meaning. 69390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // |callback| must not be null. 694eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetUploadStatusRequest(RequestSender* sender, 695eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GURL& upload_url, 696eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 content_length, 697eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const UploadRangeCallback& callback); 698868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~GetUploadStatusRequest(); 69990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 70090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) protected: 701868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // UploadRangeRequestBase overrides. 702868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void OnRangeRequestComplete( 70390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const UploadRangeResponse& response, 70490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) scoped_ptr<base::Value> value) OVERRIDE; 70590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 70690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private: 70790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const UploadRangeCallback callback_; 70890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 709868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GetUploadStatusRequest); 71090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 71190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 712eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch//========================== DownloadFileRequest ========================== 713eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 714eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// This class performs the request for downloading of a specified file. 715eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass DownloadFileRequest : public DownloadFileRequestBase { 716eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 717eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // See also DownloadFileRequestBase's comment for parameters meaning. 718eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DownloadFileRequest(RequestSender* sender, 719eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const DriveApiUrlGenerator& url_generator, 720eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& resource_id, 721eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::FilePath& output_file_path, 722eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const DownloadActionCallback& download_action_callback, 723eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GetContentCallback& get_content_callback, 724eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const ProgressCallback& progress_callback); 725eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~DownloadFileRequest(); 726eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 727eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(DownloadFileRequest); 728eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 72990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace drive 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace google_apis 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 733a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ 734