diff options
author | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-03 05:33:13 +0000 |
---|---|---|
committer | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-03 05:33:13 +0000 |
commit | e196bef3cce9217152922d53703e8202a43239fa (patch) | |
tree | 6ccd5e7ea8c6e9707c4422abd5a3f6cc5bc236f7 /google_apis/drive/gdata_wapi_requests.h | |
parent | c836b929524db27fae482ce143df51826e03ffd9 (diff) | |
download | chromium_src-e196bef3cce9217152922d53703e8202a43239fa.zip chromium_src-e196bef3cce9217152922d53703e8202a43239fa.tar.gz chromium_src-e196bef3cce9217152922d53703e8202a43239fa.tar.bz2 |
Move c/b/google_apis to google_apis/drive.
BUG=146989
R=joi@chromium.org, satorux@chromium.org, tzik@chromium.org
TBR=brettw@chromium.org
Review URL: https://codereview.chromium.org/96413002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238306 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'google_apis/drive/gdata_wapi_requests.h')
-rw-r--r-- | google_apis/drive/gdata_wapi_requests.h | 516 |
1 files changed, 516 insertions, 0 deletions
diff --git a/google_apis/drive/gdata_wapi_requests.h b/google_apis/drive/gdata_wapi_requests.h new file mode 100644 index 0000000..26f713b --- /dev/null +++ b/google_apis/drive/gdata_wapi_requests.h @@ -0,0 +1,516 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ +#define GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ + +#include <string> +#include <vector> + +#include "google_apis/drive/base_requests.h" +#include "google_apis/drive/drive_common_callbacks.h" +#include "google_apis/drive/gdata_wapi_url_generator.h" + +namespace google_apis { + +class AccountMetadata; +class GDataWapiUrlGenerator; +class ResourceEntry; + +//============================ GetResourceListRequest ======================== + +// This class performs the request for fetching a resource list. +class GetResourceListRequest : public GetDataRequest { + public: + // override_url: + // If empty, a hard-coded base URL of the WAPI server is used to fetch + // the first page of the feed. This parameter is used for fetching 2nd + // page and onward. + // + // start_changestamp: + // This parameter specifies the starting point of a delta feed or 0 if a + // full feed is necessary. + // + // search_string: + // If non-empty, fetches a list of resources that match the search + // string. + // + // directory_resource_id: + // If non-empty, fetches a list of resources in a particular directory. + // + // callback: + // Called once the feed is fetched. Must not be null. + GetResourceListRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const GURL& override_url, + int64 start_changestamp, + const std::string& search_string, + const std::string& directory_resource_id, + const GetResourceListCallback& callback); + virtual ~GetResourceListRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const GURL override_url_; + const int64 start_changestamp_; + const std::string search_string_; + const std::string directory_resource_id_; + + DISALLOW_COPY_AND_ASSIGN(GetResourceListRequest); +}; + +//============================ SearchByTitleRequest ========================== + +// This class performs the request for searching resources by title. +class SearchByTitleRequest : public GetDataRequest { + public: + // title: the search query. + // + // directory_resource_id: If given (non-empty), the search target is + // directly under the directory with the |directory_resource_id|. + // If empty, the search target is all the existing resources. + // + // callback: + // Called once the feed is fetched. Must not be null. + SearchByTitleRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const std::string& title, + const std::string& directory_resource_id, + const GetResourceListCallback& callback); + virtual ~SearchByTitleRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string title_; + const std::string directory_resource_id_; + + DISALLOW_COPY_AND_ASSIGN(SearchByTitleRequest); +}; + +//========================= GetResourceEntryRequest ========================== + +// This class performs the request for fetching a single resource entry. +class GetResourceEntryRequest : public GetDataRequest { + public: + // |callback| must not be null. + GetResourceEntryRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const std::string& resource_id, + const GURL& embed_origin, + const GetDataCallback& callback); + virtual ~GetResourceEntryRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + // Resource id of the requested entry. + const std::string resource_id_; + // Embed origin for an url to the sharing dialog. Can be empty. + const GURL& embed_origin_; + + DISALLOW_COPY_AND_ASSIGN(GetResourceEntryRequest); +}; + +//========================= GetAccountMetadataRequest ======================== + +// Callback used for GetAccountMetadata(). +typedef base::Callback<void(GDataErrorCode error, + scoped_ptr<AccountMetadata> account_metadata)> + GetAccountMetadataCallback; + +// This class performs the request for fetching account metadata. +class GetAccountMetadataRequest : public GetDataRequest { + public: + // If |include_installed_apps| is set to true, the result should include + // the list of installed third party applications. + // |callback| must not be null. + GetAccountMetadataRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const GetAccountMetadataCallback& callback, + bool include_installed_apps); + virtual ~GetAccountMetadataRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const bool include_installed_apps_; + + DISALLOW_COPY_AND_ASSIGN(GetAccountMetadataRequest); +}; + +//=========================== DeleteResourceRequest ========================== + +// This class performs the request for deleting a resource. +// +// In WAPI, "gd:deleted" means that the resource was put in the trash, and +// "docs:removed" means its permanently gone. Since what the class does is to +// put the resource into trash, we have chosen "Delete" in the name, even though +// we are preferring the term "Remove" in drive/google_api code. +class DeleteResourceRequest : public EntryActionRequest { + public: + // |callback| must not be null. + DeleteResourceRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const EntryActionCallback& callback, + const std::string& resource_id, + const std::string& etag); + virtual ~DeleteResourceRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string resource_id_; + const std::string etag_; + + DISALLOW_COPY_AND_ASSIGN(DeleteResourceRequest); +}; + +//========================== CreateDirectoryRequest ========================== + +// This class performs the request for creating a directory. +class CreateDirectoryRequest : public GetDataRequest { + public: + // A new directory will be created under a directory specified by + // |parent_resource_id|. If this parameter is empty, a new directory will + // be created in the root directory. + // |callback| must not be null. + CreateDirectoryRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const GetDataCallback& callback, + const std::string& parent_resource_id, + const std::string& directory_title); + virtual ~CreateDirectoryRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual bool GetContentData(std::string* upload_content_type, + std::string* upload_content) OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string parent_resource_id_; + const std::string directory_title_; + + DISALLOW_COPY_AND_ASSIGN(CreateDirectoryRequest); +}; + +//============================ CopyHostedDocumentRequest ===================== + +// This class performs the request for making a copy of a hosted document. +// Note that this function cannot be used to copy regular files, as it's not +// supported by WAPI. +class CopyHostedDocumentRequest : public GetDataRequest { + public: + // |callback| must not be null. + CopyHostedDocumentRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const GetDataCallback& callback, + const std::string& resource_id, + const std::string& new_title); + virtual ~CopyHostedDocumentRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual GURL GetURL() const OVERRIDE; + virtual bool GetContentData(std::string* upload_content_type, + std::string* upload_content) OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string resource_id_; + const std::string new_title_; + + DISALLOW_COPY_AND_ASSIGN(CopyHostedDocumentRequest); +}; + +//=========================== RenameResourceRequest ========================== + +// This class performs the request for renaming a document/file/directory. +class RenameResourceRequest : public EntryActionRequest { + public: + // |callback| must not be null. + RenameResourceRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const EntryActionCallback& callback, + const std::string& resource_id, + const std::string& new_title); + virtual ~RenameResourceRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; + virtual GURL GetURL() const OVERRIDE; + virtual bool GetContentData(std::string* upload_content_type, + std::string* upload_content) OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string resource_id_; + const std::string new_title_; + + DISALLOW_COPY_AND_ASSIGN(RenameResourceRequest); +}; + +//=========================== AuthorizeAppRequest ========================== + +// This class performs the request for authorizing an application specified +// by |app_id| to access a document specified by |resource_id|. +class AuthorizeAppRequest : public GetDataRequest { + public: + // |callback| must not be null. + AuthorizeAppRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const AuthorizeAppCallback& callback, + const std::string& resource_id, + const std::string& app_id); + virtual ~AuthorizeAppRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual bool GetContentData(std::string* upload_content_type, + std::string* upload_content) OVERRIDE; + virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; + virtual GURL GetURL() const OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string resource_id_; + const std::string app_id_; + + DISALLOW_COPY_AND_ASSIGN(AuthorizeAppRequest); +}; + +//======================= AddResourceToDirectoryRequest ====================== + +// This class performs the request for adding a document/file/directory +// to a directory. +class AddResourceToDirectoryRequest : public EntryActionRequest { + public: + // |callback| must not be null. + AddResourceToDirectoryRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const EntryActionCallback& callback, + const std::string& parent_resource_id, + const std::string& resource_id); + virtual ~AddResourceToDirectoryRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual bool GetContentData(std::string* upload_content_type, + std::string* upload_content) OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string parent_resource_id_; + const std::string resource_id_; + + DISALLOW_COPY_AND_ASSIGN(AddResourceToDirectoryRequest); +}; + +//==================== RemoveResourceFromDirectoryRequest ==================== + +// This class performs the request for removing a document/file/directory +// from a directory. +class RemoveResourceFromDirectoryRequest : public EntryActionRequest { + public: + // |callback| must not be null. + RemoveResourceFromDirectoryRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const EntryActionCallback& callback, + const std::string& parent_resource_id, + const std::string& resource_id); + virtual ~RemoveResourceFromDirectoryRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string resource_id_; + const std::string parent_resource_id_; + + DISALLOW_COPY_AND_ASSIGN(RemoveResourceFromDirectoryRequest); +}; + +//======================= InitiateUploadNewFileRequest ======================= + +// This class performs the request for initiating the upload of a new file. +class InitiateUploadNewFileRequest : public InitiateUploadRequestBase { + public: + // |title| should be set. + // |parent_upload_url| should be the upload_url() of the parent directory. + // (resumable-create-media URL) + // See also the comments of InitiateUploadRequestBase for more details + // about the other parameters. + InitiateUploadNewFileRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const InitiateUploadCallback& callback, + const std::string& content_type, + int64 content_length, + const std::string& parent_resource_id, + const std::string& title); + virtual ~InitiateUploadNewFileRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual bool GetContentData(std::string* upload_content_type, + std::string* upload_content) OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string parent_resource_id_; + const std::string title_; + + DISALLOW_COPY_AND_ASSIGN(InitiateUploadNewFileRequest); +}; + +//==================== InitiateUploadExistingFileRequest ===================== + +// This class performs the request for initiating the upload of an existing +// file. +class InitiateUploadExistingFileRequest + : public InitiateUploadRequestBase { + public: + // |upload_url| should be the upload_url() of the file + // (resumable-create-media URL) + // |etag| should be set if it is available to detect the upload confliction. + // See also the comments of InitiateUploadRequestBase for more details + // about the other parameters. + InitiateUploadExistingFileRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const InitiateUploadCallback& callback, + const std::string& content_type, + int64 content_length, + const std::string& resource_id, + const std::string& etag); + virtual ~InitiateUploadExistingFileRequest(); + + protected: + // UrlFetchRequestBase overrides. + virtual GURL GetURL() const OVERRIDE; + virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; + virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; + virtual bool GetContentData(std::string* upload_content_type, + std::string* upload_content) OVERRIDE; + + private: + const GDataWapiUrlGenerator url_generator_; + const std::string resource_id_; + const std::string etag_; + + DISALLOW_COPY_AND_ASSIGN(InitiateUploadExistingFileRequest); +}; + +//============================ ResumeUploadRequest =========================== + +// Performs the request for resuming the upload of a file. +class ResumeUploadRequest : public ResumeUploadRequestBase { + public: + // See also ResumeUploadRequestBase's comment for parameters meaning. + // |callback| must not be null. + ResumeUploadRequest(RequestSender* sender, + const UploadRangeCallback& callback, + const ProgressCallback& progress_callback, + const GURL& upload_location, + int64 start_position, + int64 end_position, + int64 content_length, + const std::string& content_type, + const base::FilePath& local_file_path); + virtual ~ResumeUploadRequest(); + + protected: + // UploadRangeRequestBase overrides. + virtual void OnRangeRequestComplete( + const UploadRangeResponse& response, + scoped_ptr<base::Value> value) OVERRIDE; + // content::UrlFetcherDelegate overrides. + virtual void OnURLFetchUploadProgress(const net::URLFetcher* source, + int64 current, int64 total) OVERRIDE; + + private: + const UploadRangeCallback callback_; + const ProgressCallback progress_callback_; + + DISALLOW_COPY_AND_ASSIGN(ResumeUploadRequest); +}; + +//========================== GetUploadStatusRequest ========================== + +// Performs the request to request the current upload status of a file. +class GetUploadStatusRequest : public GetUploadStatusRequestBase { + public: + // See also GetUploadStatusRequestBase's comment for parameters meaning. + // |callback| must not be null. + GetUploadStatusRequest(RequestSender* sender, + const UploadRangeCallback& callback, + const GURL& upload_url, + int64 content_length); + virtual ~GetUploadStatusRequest(); + + protected: + // UploadRangeRequestBase overrides. + virtual void OnRangeRequestComplete( + const UploadRangeResponse& response, + scoped_ptr<base::Value> value) OVERRIDE; + + private: + const UploadRangeCallback callback_; + + DISALLOW_COPY_AND_ASSIGN(GetUploadStatusRequest); +}; + + +//========================== DownloadFileRequest ========================== + +// This class performs the request for downloading of a specified file. +class DownloadFileRequest : public DownloadFileRequestBase { + public: + // See also DownloadFileRequestBase's comment for parameters meaning. + DownloadFileRequest(RequestSender* sender, + const GDataWapiUrlGenerator& url_generator, + const DownloadActionCallback& download_action_callback, + const GetContentCallback& get_content_callback, + const ProgressCallback& progress_callback, + const std::string& resource_id, + const base::FilePath& output_file_path); + virtual ~DownloadFileRequest(); + + DISALLOW_COPY_AND_ASSIGN(DownloadFileRequest); +}; + +} // namespace google_apis + +#endif // GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ |