| // Copyright (c) 2013 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_DRIVE_API_URL_GENERATOR_H_ |
| #define GOOGLE_APIS_DRIVE_DRIVE_API_URL_GENERATOR_H_ |
| |
| #include <stdint.h> |
| |
| #include <string> |
| |
| #include "base/macros.h" |
| #include "url/gurl.h" |
| |
| namespace google_apis { |
| |
| // This enum class is used to express a corpora parameter configuration for |
| // Files:list. |
| enum class FilesListCorpora { |
| // 'default': The user's subscribed items. |
| DEFAULT, |
| // 'teamDrives': A Team Drive. |
| TEAM_DRIVE, |
| // 'default,allTeamDrives': All Team Drives and the user's subscribed items. |
| ALL_TEAM_DRIVES |
| }; |
| |
| // This class is used to generate URLs for communicating with drive api |
| // servers for production, and a local server for testing. |
| class DriveApiUrlGenerator { |
| public: |
| // |base_url| is the path to the target drive api server. |
| // Note that this is an injecting point for a testing server. |
| DriveApiUrlGenerator(const GURL& base_url, const GURL& base_thumbnail_url); |
| DriveApiUrlGenerator(const DriveApiUrlGenerator& src); |
| ~DriveApiUrlGenerator(); |
| |
| // The base URL for communicating with the production drive api server. |
| static const char kBaseUrlForProduction[]; |
| |
| // The base URL for the thumbnail download server for production. |
| static const char kBaseThumbnailUrlForProduction[]; |
| |
| // Returns a URL to invoke "About: get" method. |
| GURL GetAboutGetUrl() const; |
| |
| // Returns a URL to fetch a file metadata. |
| GURL GetFilesGetUrl(const std::string& file_id, |
| const GURL& embed_origin) const; |
| |
| // Returns a URL to create a resource. |
| GURL GetFilesInsertUrl(const std::string& visibility) const; |
| |
| // Returns a URL to patch file metadata. |
| GURL GetFilesPatchUrl(const std::string& file_id, |
| bool set_modified_date, |
| bool update_viewed_date) const; |
| |
| // Returns a URL to copy a resource specified by |file_id|. |
| GURL GetFilesCopyUrl(const std::string& file_id, |
| const std::string& visibility) const; |
| |
| // Returns a URL to fetch file list. |
| GURL GetFilesListUrl(int max_results, |
| const std::string& page_token, |
| FilesListCorpora corpora, |
| const std::string& team_drive_id, |
| const std::string& q) const; |
| |
| // Returns a URL to delete a resource with the given |file_id|. |
| GURL GetFilesDeleteUrl(const std::string& file_id) const; |
| |
| // Returns a URL to trash a resource with the given |file_id|. |
| GURL GetFilesTrashUrl(const std::string& file_id) const; |
| |
| // Returns a URL to invoke "TeamDrives: list" method. |
| GURL GetTeamDriveListUrl(int max_results, |
| const std::string& page_token) const; |
| |
| // Returns a URL to fetch a list of changes. |
| GURL GetChangesListUrl(bool include_deleted, |
| int max_results, |
| const std::string& page_token, |
| int64_t start_change_id, |
| const std::string& team_dirve_id) const; |
| |
| // Returns a URL to add a resource to a directory with |folder_id|. |
| GURL GetChildrenInsertUrl(const std::string& folder_id) const; |
| |
| // Returns a URL to remove a resource with |child_id| from a directory |
| // with |folder_id|. |
| GURL GetChildrenDeleteUrl(const std::string& child_id, |
| const std::string& folder_id) const; |
| |
| // Returns a URL to initiate "resumable upload" of a new file that uploads |
| // chunked data by multiple HTTP posts. |
| GURL GetInitiateUploadNewFileUrl(bool set_modified_date) const; |
| |
| // Returns a URL to initiate "resumable upload" of an existing file specified |
| // by |resource_id| that uploads chunked data by multiple HTTP posts. |
| GURL GetInitiateUploadExistingFileUrl(const std::string& resource_id, |
| bool set_modified_date) const; |
| |
| // Returns a URL for "multipart upload" of a new file that sends both metadata |
| // and file content in a single HTTP post. |
| GURL GetMultipartUploadNewFileUrl(bool set_modified_date) const; |
| |
| // Returns a URL for "multipart upload" of an existing file specified by |
| // |resource_id| that sends both metadata and file content in a single HTTP |
| // post. |
| GURL GetMultipartUploadExistingFileUrl(const std::string& resource_id, |
| bool set_modified_date) const; |
| |
| // Generates a URL for downloading a file. |
| GURL GenerateDownloadFileUrl(const std::string& resource_id) const; |
| |
| // Generates a URL for adding permissions. |
| GURL GetPermissionsInsertUrl(const std::string& resource_id) const; |
| |
| // Generates a URL for a thumbnail with specified dimensions. Set |crop| to |
| // true to get a cropped thumbnail in the dimensions. |
| GURL GetThumbnailUrl(const std::string& resource_id, |
| int width, |
| int height, |
| bool crop) const; |
| |
| // Generates a URL for batch upload. |
| GURL GetBatchUploadUrl() const; |
| |
| // Returns a URL for the start page token for a |team_drive|. |team_drive| |
| // may be empty, in which case the start page token will be returned for |
| // the users changes. |
| GURL GetStartPageTokenUrl(const std::string& team_drive) const; |
| |
| private: |
| const GURL base_url_; |
| const GURL base_download_url_; |
| const GURL base_thumbnail_url_; |
| |
| // This class is copyable hence no DISALLOW_COPY_AND_ASSIGN here. |
| }; |
| |
| } // namespace google_apis |
| |
| #endif // GOOGLE_APIS_DRIVE_DRIVE_API_URL_GENERATOR_H_ |