Class: Google::Apis::Core::BaseService

Inherits:
Object
  • Object
show all
Defined in:
lib/google/apis/core/base_service.rb

Overview

Base service for all APIs. Not to be used directly.

Direct Known Subclasses

Adexchangebuyer2V2beta1::AdExchangeBuyerIIService, AdexchangebuyerV1_3::AdExchangeBuyerService, AdexchangebuyerV1_4::AdExchangeBuyerService, AdexchangesellerV2_0::AdExchangeSellerService, AdminDatatransferV1::DataTransferService, AdminDirectoryV1::DirectoryService, AdminReportsV1::ReportsService, AdsenseV1_4::AdSenseService, AdsensehostV4_1::AdSenseHostService, AnalyticsV3::AnalyticsService, AnalyticsreportingV4::AnalyticsReportingService, AndroidenterpriseV1::AndroidEnterpriseService, AndroidpublisherV2::AndroidPublisherService, AppengineV1beta4::AppengineService, AppengineV1beta5::AppengineService, AppsactivityV1::AppsactivityService, AppstateV1::AppStateService, AutoscalerV1beta2::AutoscalerService, BigqueryV2::BigqueryService, BloggerV3::BloggerService, BooksV1::BooksService, Google::Apis::CalendarV3::CalendarService, Google::Apis::CivicinfoV2::CivicInfoService, Google::Apis::ClassroomV1::ClassroomService, Google::Apis::ClassroomV1beta1::ClassroomService, Google::Apis::CloudbillingV1::CloudbillingService, Google::Apis::CloudbuildV1::CloudBuildService, Google::Apis::ClouddebuggerV2::CloudDebuggerService, Google::Apis::CloudlatencytestV2::CloudlatencytestService, Google::Apis::CloudmonitoringV2beta2::CloudMonitoringService, Google::Apis::CloudresourcemanagerV1::CloudResourceManagerService, Google::Apis::CloudresourcemanagerV1beta1::CloudResourceManagerService, Google::Apis::CloudtraceV1::CloudTraceService, Google::Apis::ClouduseraccountsBeta::CloudUserAccountsService, Google::Apis::ComputeBeta::ComputeService, Google::Apis::ComputeV1::ComputeService, Google::Apis::ContainerV1::ContainerService, Google::Apis::ContainerV1beta1::ContainerService, Google::Apis::ContentV2::ShoppingContentService, Google::Apis::CoordinateV1::CoordinateService, Google::Apis::CustomsearchV1::CustomsearchService, DataflowV1b3::DataflowService, DataprocV1::DataprocService, DatastoreV1::DatastoreService, DatastoreV1beta2::DatastoreService, DatastoreV1beta3::DatastoreService, DeploymentmanagerV2::DeploymentManagerService, DeploymentmanagerV2beta2::DeploymentManagerService, DfareportingV2_1::DfareportingService, DfareportingV2_3::DfareportingService, DfareportingV2_5::DfareportingService, DfareportingV2_6::DfareportingService, DiscoveryV1::DiscoveryService, DnsV1::DnsService, DoubleclickbidmanagerV1::DoubleClickBidManagerService, DoubleclicksearchV2::DoubleclicksearchService, DriveV2::DriveService, DriveV3::DriveService, FitnessV1::FitnessService, FusiontablesV2::FusiontablesService, GamesConfigurationV1configuration::GamesConfigurationService, GamesManagementV1management::GamesManagementService, GamesV1::GamesService, GanV1beta1::GanService, GenomicsV1::GenomicsService, GenomicsV1beta2::GenomicsService, GmailV1::GmailService, GroupsmigrationV1::GroupsMigrationService, GroupssettingsV1::GroupssettingsService, IamV1::IamService, IdentitytoolkitV3::IdentityToolkitService, KgsearchV1::KgsearchService, LanguageV1beta1::CloudNaturalLanguageAPIService, LicensingV1::LicensingService, LoggingV1beta3::LoggingService, LoggingV2beta1::LoggingService, ManagerV1beta2::ManagerService, MirrorV1::MirrorService, MonitoringV3::MonitoringService, MybusinessV3::MybusinessService, Oauth2V2::Oauth2Service, PagespeedonlineV2::PagespeedonlineService, PartnersV2::PartnersService, PeopleV1::PeopleService, PlusDomainsV1::PlusDomainsService, PlusV1::PlusService, PredictionV1_6::PredictionService, ProximitybeaconV1beta1::ProximitybeaconService, PubsubV1::PubsubService, PubsubV1beta2::PubsubService, QpxExpressV1::QPXExpressService, ReplicapoolV1beta2::ReplicapoolService, ReplicapoolupdaterV1beta1::ReplicapoolupdaterService, ResellerV1::ResellerService, ResourceviewsV1beta2::ResourceviewsService, ScriptV1::ScriptService, SheetsV4::SheetsService, SiteVerificationV1::SiteVerificationService, SpeechV1beta1::SpeechService, SqladminV1beta4::SQLAdminService, StorageV1::StorageService, StoragetransferV1::StoragetransferService, TagmanagerV1::TagManagerService, TaskqueueV1beta2::TaskqueueService, TasksV1::TasksService, TranslateV2::TranslateService, UrlshortenerV1::UrlshortenerService, VisionV1::VisionService, WebmastersV3::WebmastersService, YoutubeAnalyticsV1::YouTubeAnalyticsService, YoutubePartnerV1::YouTubePartnerService, YoutubeV3::YouTubeService, YoutubereportingV1::YouTubeReportingService

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root_url, base_path) ⇒ BaseService

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of BaseService

Parameters:

  • root_url (String, Addressable::URI)

    Root URL for the API

  • base_path (String, Addressable::URI)

    Additional path prefix for all API methods


120
121
122
123
124
125
126
127
# File 'lib/google/apis/core/base_service.rb', line 120

def initialize(root_url, base_path)
  self.root_url = root_url
  self.base_path = base_path
  self.upload_path = "upload/#{base_path}"
  self.batch_path = 'batch'
  self.client_options = Google::Apis::ClientOptions.default.dup
  self.request_options = Google::Apis::RequestOptions.default.dup
end

Instance Attribute Details

#authorizationSignet::OAuth2::Client

Returns OAuth2 credentials

Returns:

  • (Signet::OAuth2::Client)

    OAuth2 credentials


132
133
134
# File 'lib/google/apis/core/base_service.rb', line 132

def authorization=(authorization)
  request_options.authorization = authorization
end

#base_pathAddressable::URI

Additional path prefix for all API methods

Returns:

  • (Addressable::URI)

93
94
95
# File 'lib/google/apis/core/base_service.rb', line 93

def base_path
  @base_path
end

#batch_pathAddressable::URI

Alternate path prefix for all batch methods

Returns:

  • (Addressable::URI)

101
102
103
# File 'lib/google/apis/core/base_service.rb', line 101

def batch_path
  @batch_path
end

#clientHurley::Client

Get the current HTTP client

Returns:

  • (Hurley::Client)

105
106
107
# File 'lib/google/apis/core/base_service.rb', line 105

def client
  @client
end

#client_optionsGoogle::Apis::ClientOptions

General settings


109
110
111
# File 'lib/google/apis/core/base_service.rb', line 109

def client_options
  @client_options
end

#request_optionsGoogle::Apis::RequestOptions

Default options for all requests


113
114
115
# File 'lib/google/apis/core/base_service.rb', line 113

def request_options
  @request_options
end

#root_urlAddressable::URI

Root URL (host/port) for the API

Returns:

  • (Addressable::URI)

89
90
91
# File 'lib/google/apis/core/base_service.rb', line 89

def root_url
  @root_url
end

#upload_pathAddressable::URI

Alternate path prefix for media uploads

Returns:

  • (Addressable::URI)

97
98
99
# File 'lib/google/apis/core/base_service.rb', line 97

def upload_path
  @upload_path
end

Instance Method Details

#batch(options = nil) {|self| ... }

This method returns an undefined value.

Perform a batch request. Calls made within the block are sent in a single network request to the server.

Examples:

service.batch do |s|
  s.get_item(id1) do |res, err|
    # process response for 1st call
  end
  # ...
  s.get_item(idN) do |res, err|
    # process response for Nth call
  end
end

Parameters:

Yields:

  • (self)

160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/google/apis/core/base_service.rb', line 160

def batch(options = nil)
  batch_command = BatchCommand.new(:post, Addressable::URI.parse(root_url + batch_path))
  batch_command.options = request_options.merge(options)
  apply_command_defaults(batch_command)
  begin
    Thread.current[:google_api_batch] = batch_command
    yield self
  ensure
    Thread.current[:google_api_batch] = nil
  end
  batch_command.execute(client)
end

#batch_upload(options = nil) {|self| ... }

This method returns an undefined value.

Perform a batch upload request. Calls made within the block are sent in a single network request to the server. Batch uploads are useful for uploading multiple small files. For larger files, use single requests which use a resumable upload protocol.

Examples:

service.batch do |s|
  s.insert_item(upload_source: 'file1.txt') do |res, err|
    # process response for 1st call
  end
  # ...
  s.insert_item(upload_source: 'fileN.txt') do |res, err|
    # process response for Nth call
  end
end

Parameters:

Yields:

  • (self)

192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/google/apis/core/base_service.rb', line 192

def batch_upload(options = nil)
  batch_command = BatchUploadCommand.new(:put, Addressable::URI.parse(root_url + upload_path))
  batch_command.options = request_options.merge(options)
  apply_command_defaults(batch_command)
  begin
    Thread.current[:google_api_batch] = batch_command
    yield self
  ensure
    Thread.current[:google_api_batch] = nil
  end
  batch_command.execute(client)
end

#fetch_all(max: nil, items: :items, cache: true) {|token, service| ... } ⇒ Enumerble

Executes a given query with paging, automatically retrieving additional pages as necessary. Requires a block that returns the result set of a page. The current page token is supplied as an argument to the block.

Note: The returned enumerable also contains a last_result field containing the full result of the last query executed.

Examples:

Retrieve all files,

file_list = service.fetch_all { |token, s| s.list_files(page_token: token) }
file_list.each { |f| ... }

Parameters:

  • max (Fixnum)

    Maximum number of items to iterate over. Defaults to nil -- no upper bound.

  • items (Symbol)

    Name of the field in the result containing the items. Defaults to :items

  • cache (Boolean)

    True (default) if results should be cached so multiple iterations can be used.

Yields:

  • (token, service)

    Current page token & service instance

Yield Parameters:

  • token (String)

    Current page token to be used in the query

Returns:

  • (Enumerble)

Since:

  • 0.9.4


273
274
275
276
# File 'lib/google/apis/core/base_service.rb', line 273

def fetch_all(max: nil, items: :items, cache: true,  &block)
  fail "fetch_all may not be used inside a batch" if batch?
  return PagedResults.new(self, max: max, items: items, cache: cache, &block)
end

#http(method, url, params: nil, body: nil, download_dest: nil, options: nil) {|result, err| ... } ⇒ String

Simple escape hatch for making API requests directly to a given URL. This is not intended to be used as a generic HTTP client and should be used only in cases where no service method exists (e.g. fetching an export link for a Google Drive file.)

Parameters:

  • method (Symbol)

    HTTP method as symbol (e.g. :get, :post, :put, ...)

  • url (String)

    URL to call

  • params (Hash<String,String>)

    Optional hash of query parameters

  • body (#read)

    Optional body for POST/PUT

  • download_dest (IO, String)

    IO stream or filename to receive content download

  • options (Google::Apis::RequestOptions)

    Request-specific options

Yields:

  • (result, err)

    Result & error if block supplied

Yield Parameters:

  • result (String)

    HTTP response body

  • err (StandardError)

    error object if request failed

Returns:

  • (String)

    HTTP response body


235
236
237
238
239
240
241
242
243
244
245
# File 'lib/google/apis/core/base_service.rb', line 235

def http(method, url, params: nil, body: nil, download_dest: nil, options: nil, &block)
  if download_dest
    command = DownloadCommand.new(method, url, body: body)
  else
    command = HttpCommand.new(method, url, body: body)
  end
  command.options = request_options.merge(options)
  apply_command_defaults(command)
  command.query.merge(Hash(params))
  execute_or_queue_command(command, &block)
end