root/google_apis/drive/gdata_wapi_url_generator.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


// 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.
//
// URL utility functions for Google Documents List API (aka WAPI).

#ifndef GOOGLE_APIS_DRIVE_GDATA_WAPI_URL_GENERATOR_H_
#define GOOGLE_APIS_DRIVE_GDATA_WAPI_URL_GENERATOR_H_

#include <string>

#include "url/gurl.h"

namespace google_apis {

// The class is used to generate URLs for communicating with the WAPI server.
// for production, and the local server for testing.
class GDataWapiUrlGenerator {
 public:
  // The
  GDataWapiUrlGenerator(const GURL& base_url, const GURL& base_download_url);
  ~GDataWapiUrlGenerator();

  // The base URL for communicating with the WAPI server for production.
  static const char kBaseUrlForProduction[];

  // The base URL for the file download server for production.
  static const char kBaseDownloadUrlForProduction[];

  // Adds additional parameters for API version, output content type and to
  // show folders in the feed are added to document feed URLs.
  static GURL AddStandardUrlParams(const GURL& url);

  // Adds additional parameters for initiate uploading as well as standard
  // url params (as AddStandardUrlParams above does).
  static GURL AddInitiateUploadUrlParams(const GURL& url);

  // Adds additional parameters for API version, output content type and to
  // show folders in the feed are added to document feed URLs.
  static GURL AddFeedUrlParams(const GURL& url,
                               int num_items_to_fetch);

  // Generates a URL for getting the resource list feed.
  //
  // The parameters other than |search_string| are mutually exclusive.
  // If |override_url| is non-empty, other parameters are ignored. Or if
  // |override_url| is empty, others are not used. Besides, |search_string|
  // cannot be set together with |start_changestamp|.
  //
  // override_url:
  //   By default, a hard-coded base URL of the WAPI server is used.
  //   The base URL can be overridden by |override_url|.
  //   This is used for handling continuation of feeds (2nd page and onward).
  //
  // start_changestamp
  //   If |start_changestamp| is 0, URL for a full feed is generated.
  //   If |start_changestamp| is non-zero, URL for a delta feed is generated.
  //
  // search_string
  //   If |search_string| is non-empty, q=... parameter is added, and
  //   max-results=... parameter is adjusted for a search.
  //
  // directory_resource_id:
  //   If |directory_resource_id| is non-empty, a URL for fetching documents in
  //   a particular directory is generated.
  //
  GURL GenerateResourceListUrl(
      const GURL& override_url,
      int64 start_changestamp,
      const std::string& search_string,
      const std::string& directory_resource_id) const;

  // Generates a URL for searching resources by title (exact-match).
  // |directory_resource_id| is optional parameter. When it is empty
  // all the existing resources are target of the search. Otherwise,
  // the search target is just under the directory with it.
  GURL GenerateSearchByTitleUrl(
      const std::string& title,
      const std::string& directory_resource_id) const;

  // Generates a URL for getting or editing the resource entry of
  // the given resource ID.
  GURL GenerateEditUrl(const std::string& resource_id) const;

  // Generates a URL for getting or editing the resource entry of the
  // given resource ID without query params.
  // Note that, in order to access to the WAPI server, it is necessary to
  // append some query parameters to the URL. GenerateEditUrl declared above
  // should be used in such cases. This method is designed for constructing
  // the data, such as xml element/attributes in request body containing
  // edit urls.
  GURL GenerateEditUrlWithoutParams(const std::string& resource_id) const;

  // Generates a URL for getting or editing the resource entry of the given
  // resource ID with additionally passed embed origin. This is used to fetch
  // share urls for the sharing dialog to be embedded with the |embed_origin|
  // origin.
  GURL GenerateEditUrlWithEmbedOrigin(const std::string& resource_id,
                                      const GURL& embed_origin) const;

  // Generates a URL for editing the contents in the directory specified
  // by the given resource ID.
  GURL GenerateContentUrl(const std::string& resource_id) const;

  // Generates a URL to remove an entry specified by |resource_id| from
  // the directory specified by the given |parent_resource_id|.
  GURL GenerateResourceUrlForRemoval(const std::string& parent_resource_id,
                                     const std::string& resource_id) const;

  // Generates a URL to initiate uploading a new file to a directory
  // specified by |parent_resource_id|.
  GURL GenerateInitiateUploadNewFileUrl(
      const std::string& parent_resource_id) const;

  // Generates a URL to initiate uploading file content to overwrite a
  // file specified by |resource_id|.
  GURL GenerateInitiateUploadExistingFileUrl(
      const std::string& resource_id) const;

  // Generates a URL for getting the root resource list feed.
  // Used to make changes in the root directory (ex. create a directory in the
  // root directory)
  GURL GenerateResourceListRootUrl() const;

  // Generates a URL for getting the account metadata feed.
  // If |include_installed_apps| is set to true, the response will include the
  // list of installed third party applications.
  GURL GenerateAccountMetadataUrl(bool include_installed_apps) const;

  // Generates a URL for downloading a file.
  GURL GenerateDownloadFileUrl(const std::string& resource_id) const;

 private:
  const GURL base_url_;
  const GURL base_download_url_;
};

}  // namespace google_apis

#endif  // GOOGLE_APIS_DRIVE_GDATA_WAPI_URL_GENERATOR_H_

/* [<][>][^][v][top][bottom][index][help] */