blob: 68d22dbe2450db3a285392d3d71b9ea71518d0ea [file] [log] [blame]
// 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_