12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef GOOGLE_APIS_DRIVE_DRIVE_API_URL_GENERATOR_H_ 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define GOOGLE_APIS_DRIVE_DRIVE_API_URL_GENERATOR_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace google_apis { 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This class is used to generate URLs for communicating with drive api 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// servers for production, and a local server for testing. 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DriveApiUrlGenerator { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |base_url| is the path to the target drive api server. 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Note that this is an injecting point for a testing server. 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DriveApiUrlGenerator(const GURL& base_url, const GURL& base_download_url); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~DriveApiUrlGenerator(); 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The base URL for communicating with the production drive api server. 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kBaseUrlForProduction[]; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // The base URL for the file download server for production. 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static const char kBaseDownloadUrlForProduction[]; 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 29424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to invoke "About: get" method. 30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL GetAboutGetUrl() const; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to invoke "Apps: list" method. 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Set |use_internal_endpoint| to true if official Chrome's API key is used 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // and retrieving more information (related to App uninstall) is necessary. 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL GetAppsListUrl(bool use_internal_endpoint) const; 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns a URL to uninstall an app with the give |app_id|. 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL GetAppsDeleteUrl(const std::string& app_id) const; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to fetch a file metadata. 41424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL GetFilesGetUrl(const std::string& file_id) const; 42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns a URL to authorize an app to access a file. 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL GetFilesAuthorizeUrl(const std::string& file_id, 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& app_id) const; 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 47424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to create a resource. 48424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL GetFilesInsertUrl() const; 49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 50424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to patch file metadata. 51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL GetFilesPatchUrl(const std::string& file_id, 52424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool set_modified_date, 53424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool update_viewed_date) const; 54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 55424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to copy a resource specified by |file_id|. 56424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL GetFilesCopyUrl(const std::string& file_id) const; 57424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 58424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to fetch file list. 59424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL GetFilesListUrl(int max_results, 60424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& page_token, 61424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& q) const; 62424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns a URL to delete a resource with the given |file_id|. 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL GetFilesDeleteUrl(const std::string& file_id) const; 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 66424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to trash a resource with the given |file_id|. 67424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL GetFilesTrashUrl(const std::string& file_id) const; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 69424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns a URL to fetch a list of changes. 70424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) GURL GetChangesListUrl(bool include_deleted, 71424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int max_results, 72424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string& page_token, 73424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int64 start_change_id) const; 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Returns a URL to add a resource to a directory with |folder_id|. 7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL GetChildrenInsertUrl(const std::string& folder_id) const; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns a URL to remove a resource with |child_id| from a directory 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // with |folder_id|. 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL GetChildrenDeleteUrl(const std::string& child_id, 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& folder_id) const; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns a URL to initiate uploading a new file. 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL GetInitiateUploadNewFileUrl(bool set_modified_date) const; 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns a URL to initiate uploading an existing file specified by 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |resource_id|. 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GURL GetInitiateUploadExistingFileUrl(const std::string& resource_id, 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool set_modified_date) const; 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Generates a URL for downloading a file. 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL GenerateDownloadFileUrl(const std::string& resource_id) const; 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Generates a URL for adding permissions. 95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GURL GetPermissionsInsertUrl(const std::string& resource_id) const; 96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL base_url_; 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GURL base_download_url_; 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This class is copyable hence no DISALLOW_COPY_AND_ASSIGN here. 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace google_apis 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // GOOGLE_APIS_DRIVE_DRIVE_API_URL_GENERATOR_H_ 107