google-api-client 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +28 -3
- data/api_names.yaml +1 -0
- data/api_names_out.yaml +418 -0
- data/generated/google/apis/adexchangebuyer_v1_4.rb +1 -1
- data/generated/google/apis/adsense_v1_4.rb +2 -3
- data/generated/google/apis/adsense_v1_4/service.rb +1 -2
- data/generated/google/apis/adsensehost_v4_1.rb +3 -3
- data/generated/google/apis/adsensehost_v4_1/service.rb +2 -2
- data/generated/google/apis/analytics_v3.rb +2 -2
- data/generated/google/apis/analytics_v3/classes.rb +42 -0
- data/generated/google/apis/analytics_v3/representations.rb +6 -0
- data/generated/google/apis/analytics_v3/service.rb +3 -3
- data/generated/google/apis/androidenterprise_v1.rb +1 -1
- data/generated/google/apis/appsactivity_v1.rb +1 -1
- data/generated/google/apis/appsactivity_v1/classes.rb +16 -0
- data/generated/google/apis/appsactivity_v1/representations.rb +2 -0
- data/generated/google/apis/appstate_v1.rb +1 -1
- data/generated/google/apis/bigquery_v2.rb +1 -1
- data/generated/google/apis/bigquery_v2/classes.rb +200 -13
- data/generated/google/apis/bigquery_v2/representations.rb +54 -0
- data/generated/google/apis/books_v1.rb +1 -1
- data/generated/google/apis/books_v1/classes.rb +6 -0
- data/generated/google/apis/books_v1/representations.rb +1 -0
- data/generated/google/apis/books_v1/service.rb +4 -1
- data/generated/google/apis/calendar_v3.rb +1 -1
- data/generated/google/apis/cloudbuild_v1.rb +2 -3
- data/generated/google/apis/cloudbuild_v1/classes.rb +7 -0
- data/generated/google/apis/cloudbuild_v1/representations.rb +1 -0
- data/generated/google/apis/cloudbuild_v1/service.rb +1 -2
- data/generated/google/apis/clouddebugger_v2.rb +2 -2
- data/generated/google/apis/clouddebugger_v2/classes.rb +8 -1
- data/generated/google/apis/clouddebugger_v2/representations.rb +1 -0
- data/generated/google/apis/clouddebugger_v2/service.rb +26 -6
- data/generated/google/apis/cloudlatencytest_v2.rb +2 -2
- data/generated/google/apis/cloudlatencytest_v2/service.rb +1 -1
- data/generated/google/apis/cloudmonitoring_v2beta2.rb +2 -2
- data/generated/google/apis/cloudmonitoring_v2beta2/service.rb +1 -1
- data/generated/google/apis/cloudresourcemanager_v1.rb +38 -0
- data/generated/google/apis/cloudresourcemanager_v1/classes.rb +355 -0
- data/generated/google/apis/cloudresourcemanager_v1/representations.rb +181 -0
- data/generated/google/apis/cloudresourcemanager_v1/service.rb +373 -0
- data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
- data/generated/google/apis/clouduseraccounts_beta.rb +3 -2
- data/generated/google/apis/clouduseraccounts_beta/classes.rb +52 -30
- data/generated/google/apis/clouduseraccounts_beta/representations.rb +1 -0
- data/generated/google/apis/clouduseraccounts_beta/service.rb +110 -57
- data/generated/google/apis/compute_beta.rb +1 -1
- data/generated/google/apis/compute_beta/classes.rb +324 -101
- data/generated/google/apis/compute_beta/representations.rb +78 -0
- data/generated/google/apis/compute_beta/service.rb +1599 -208
- data/generated/google/apis/compute_v1.rb +1 -1
- data/generated/google/apis/compute_v1/classes.rb +96 -79
- data/generated/google/apis/compute_v1/service.rb +199 -169
- data/generated/google/apis/content_v2.rb +2 -2
- data/generated/google/apis/content_v2/classes.rb +6 -0
- data/generated/google/apis/content_v2/representations.rb +1 -0
- data/generated/google/apis/content_v2/service.rb +1 -1
- data/generated/google/apis/deploymentmanager_v2.rb +1 -1
- data/generated/google/apis/deploymentmanager_v2/classes.rb +6 -6
- data/generated/google/apis/deploymentmanager_v2/service.rb +10 -10
- data/generated/google/apis/doubleclickbidmanager_v1.rb +1 -1
- data/generated/google/apis/doubleclicksearch_v2.rb +2 -2
- data/generated/google/apis/doubleclicksearch_v2/service.rb +1 -1
- data/generated/google/apis/drive_v2.rb +1 -1
- data/generated/google/apis/drive_v3.rb +1 -1
- data/generated/google/apis/games_configuration_v1configuration.rb +1 -1
- data/generated/google/apis/games_management_v1management.rb +1 -1
- data/generated/google/apis/games_v1.rb +1 -1
- data/generated/google/apis/games_v1/classes.rb +9 -2
- data/generated/google/apis/games_v1/representations.rb +1 -0
- data/generated/google/apis/genomics_v1.rb +4 -5
- data/generated/google/apis/genomics_v1/classes.rb +51 -0
- data/generated/google/apis/genomics_v1/representations.rb +17 -0
- data/generated/google/apis/genomics_v1/service.rb +44 -8
- data/generated/google/apis/gmail_v1.rb +2 -2
- data/generated/google/apis/gmail_v1/classes.rb +19 -0
- data/generated/google/apis/gmail_v1/representations.rb +13 -0
- data/generated/google/apis/gmail_v1/service.rb +43 -2
- data/generated/google/apis/iam_v1.rb +36 -0
- data/generated/google/apis/iam_v1/classes.rb +665 -0
- data/generated/google/apis/iam_v1/representations.rb +325 -0
- data/generated/google/apis/iam_v1/service.rb +520 -0
- data/generated/google/apis/identitytoolkit_v3.rb +1 -1
- data/generated/google/apis/identitytoolkit_v3/classes.rb +306 -0
- data/generated/google/apis/identitytoolkit_v3/representations.rb +85 -0
- data/generated/google/apis/identitytoolkit_v3/service.rb +42 -1
- data/generated/google/apis/pagespeedonline_v2.rb +2 -2
- data/generated/google/apis/pagespeedonline_v2/service.rb +1 -1
- data/generated/google/apis/plus_domains_v1.rb +1 -1
- data/generated/google/apis/plus_v1.rb +1 -1
- data/generated/google/apis/prediction_v1_6.rb +1 -1
- data/generated/google/apis/prediction_v1_6/classes.rb +1 -1
- data/generated/google/apis/qpx_express_v1.rb +2 -2
- data/generated/google/apis/qpx_express_v1/service.rb +1 -1
- data/generated/google/apis/replicapoolupdater_v1beta1.rb +2 -3
- data/generated/google/apis/replicapoolupdater_v1beta1/service.rb +1 -2
- data/generated/google/apis/reseller_v1.rb +2 -2
- data/generated/google/apis/reseller_v1/service.rb +1 -1
- data/generated/google/apis/site_verification_v1.rb +2 -2
- data/generated/google/apis/site_verification_v1/service.rb +1 -1
- data/generated/google/apis/storage_v1.rb +2 -2
- data/generated/google/apis/storage_v1/service.rb +1 -1
- data/generated/google/apis/tagmanager_v1.rb +2 -2
- data/generated/google/apis/tagmanager_v1/service.rb +1 -1
- data/generated/google/apis/vision_v1.rb +1 -1
- data/generated/google/apis/vision_v1/classes.rb +2 -2
- data/generated/google/apis/youtube_analytics_v1.rb +2 -2
- data/generated/google/apis/youtube_analytics_v1/service.rb +1 -1
- data/generated/google/apis/youtube_v3.rb +1 -1
- data/generated/google/apis/youtube_v3/classes.rb +8 -0
- data/generated/google/apis/youtube_v3/representations.rb +1 -0
- data/generated/google/apis/youtubereporting_v1.rb +3 -3
- data/generated/google/apis/youtubereporting_v1/classes.rb +1 -2
- data/generated/google/apis/youtubereporting_v1/service.rb +4 -4
- data/lib/google/apis/core/base_service.rb +84 -6
- data/lib/google/apis/version.rb +1 -1
- data/script/generate +2 -0
- data/spec/google/apis/core/service_spec.rb +66 -0
- metadata +10 -2
@@ -22,7 +22,7 @@ module Google
|
|
22
22
|
module SiteVerificationV1
|
23
23
|
# Google Site Verification API
|
24
24
|
#
|
25
|
-
#
|
25
|
+
# Verifies ownership of websites or domains with Google.
|
26
26
|
#
|
27
27
|
# @example
|
28
28
|
# require 'google/apis/site_verification_v1'
|
@@ -20,12 +20,12 @@ module Google
|
|
20
20
|
module Apis
|
21
21
|
# Cloud Storage JSON API
|
22
22
|
#
|
23
|
-
#
|
23
|
+
# Stores and retrieves potentially large, immutable data objects.
|
24
24
|
#
|
25
25
|
# @see https://developers.google.com/storage/docs/json_api/
|
26
26
|
module StorageV1
|
27
27
|
VERSION = 'V1'
|
28
|
-
REVISION = '
|
28
|
+
REVISION = '20160304'
|
29
29
|
|
30
30
|
# View and manage your data across Google Cloud Platform services
|
31
31
|
AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
|
@@ -22,7 +22,7 @@ module Google
|
|
22
22
|
module StorageV1
|
23
23
|
# Cloud Storage JSON API
|
24
24
|
#
|
25
|
-
#
|
25
|
+
# Stores and retrieves potentially large, immutable data objects.
|
26
26
|
#
|
27
27
|
# @example
|
28
28
|
# require 'google/apis/storage_v1'
|
@@ -20,12 +20,12 @@ module Google
|
|
20
20
|
module Apis
|
21
21
|
# Tag Manager API
|
22
22
|
#
|
23
|
-
#
|
23
|
+
# Accesses Tag Manager accounts and containers.
|
24
24
|
#
|
25
25
|
# @see https://developers.google.com/tag-manager/api/v1/
|
26
26
|
module TagmanagerV1
|
27
27
|
VERSION = 'V1'
|
28
|
-
REVISION = '
|
28
|
+
REVISION = '20160310'
|
29
29
|
|
30
30
|
# Delete your Google Tag Manager containers
|
31
31
|
AUTH_TAGMANAGER_DELETE_CONTAINERS = 'https://www.googleapis.com/auth/tagmanager.delete.containers'
|
@@ -28,7 +28,7 @@ module Google
|
|
28
28
|
# @see https://cloud.google.com/vision/
|
29
29
|
module VisionV1
|
30
30
|
VERSION = 'V1'
|
31
|
-
REVISION = '
|
31
|
+
REVISION = '20160308'
|
32
32
|
|
33
33
|
# View and manage your data across Google Cloud Platform services
|
34
34
|
AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
|
@@ -757,7 +757,7 @@ module Google
|
|
757
757
|
# @return [Google::Apis::VisionV1::BoundingPoly]
|
758
758
|
attr_accessor :bounding_poly
|
759
759
|
|
760
|
-
# The location information for the
|
760
|
+
# The location information for the detected entity. Multiple
|
761
761
|
# <code>LocationInfo</code> elements can be present since one location may
|
762
762
|
# indicate the location of the scene in the query image, and another the
|
763
763
|
# location of the place where the query image was taken. Location information
|
@@ -766,7 +766,7 @@ module Google
|
|
766
766
|
# @return [Array<Google::Apis::VisionV1::LocationInfo>]
|
767
767
|
attr_accessor :locations
|
768
768
|
|
769
|
-
# The accuracy of the entity
|
769
|
+
# The accuracy of the entity detection in an image.
|
770
770
|
# For example, for an image containing 'Eiffel Tower,' this field represents
|
771
771
|
# the confidence that there is a tower in the query image. Range [0, 1].
|
772
772
|
# Corresponds to the JSON property `confidence`
|
@@ -20,12 +20,12 @@ module Google
|
|
20
20
|
module Apis
|
21
21
|
# YouTube Analytics API
|
22
22
|
#
|
23
|
-
#
|
23
|
+
# Retrieves your YouTube Analytics reports.
|
24
24
|
#
|
25
25
|
# @see http://developers.google.com/youtube/analytics/
|
26
26
|
module YoutubeAnalyticsV1
|
27
27
|
VERSION = 'V1'
|
28
|
-
REVISION = '
|
28
|
+
REVISION = '20160301'
|
29
29
|
|
30
30
|
# Manage your YouTube account
|
31
31
|
AUTH_YOUTUBE = 'https://www.googleapis.com/auth/youtube'
|
@@ -925,6 +925,7 @@ module Google
|
|
925
925
|
attr_accessor :localizations
|
926
926
|
|
927
927
|
# Basic details about a channel, including title, description and thumbnails.
|
928
|
+
# Next available id: 15.
|
928
929
|
# Corresponds to the JSON property `snippet`
|
929
930
|
# @return [Google::Apis::YoutubeV3::ChannelSnippet]
|
930
931
|
attr_accessor :snippet
|
@@ -1711,6 +1712,7 @@ module Google
|
|
1711
1712
|
end
|
1712
1713
|
|
1713
1714
|
# Basic details about a channel, including title, description and thumbnails.
|
1715
|
+
# Next available id: 15.
|
1714
1716
|
class ChannelSnippet
|
1715
1717
|
include Google::Apis::Core::Hashable
|
1716
1718
|
|
@@ -1719,6 +1721,11 @@ module Google
|
|
1719
1721
|
# @return [String]
|
1720
1722
|
attr_accessor :country
|
1721
1723
|
|
1724
|
+
# The custom url of the channel.
|
1725
|
+
# Corresponds to the JSON property `customUrl`
|
1726
|
+
# @return [String]
|
1727
|
+
attr_accessor :custom_url
|
1728
|
+
|
1722
1729
|
# The language of the channel's default title and description.
|
1723
1730
|
# Corresponds to the JSON property `defaultLanguage`
|
1724
1731
|
# @return [String]
|
@@ -1757,6 +1764,7 @@ module Google
|
|
1757
1764
|
# Update properties of this object
|
1758
1765
|
def update!(**args)
|
1759
1766
|
@country = args[:country] if args.key?(:country)
|
1767
|
+
@custom_url = args[:custom_url] if args.key?(:custom_url)
|
1760
1768
|
@default_language = args[:default_language] if args.key?(:default_language)
|
1761
1769
|
@description = args[:description] if args.key?(:description)
|
1762
1770
|
@localized = args[:localized] if args.key?(:localized)
|
@@ -1494,6 +1494,7 @@ module Google
|
|
1494
1494
|
# @private
|
1495
1495
|
class Representation < Google::Apis::Core::JsonRepresentation
|
1496
1496
|
property :country, as: 'country'
|
1497
|
+
property :custom_url, as: 'customUrl'
|
1497
1498
|
property :default_language, as: 'defaultLanguage'
|
1498
1499
|
property :description, as: 'description'
|
1499
1500
|
property :localized, as: 'localized', class: Google::Apis::YoutubeV3::ChannelLocalization, decorator: Google::Apis::YoutubeV3::ChannelLocalization::Representation
|
@@ -20,13 +20,13 @@ module Google
|
|
20
20
|
module Apis
|
21
21
|
# YouTube Reporting API
|
22
22
|
#
|
23
|
-
#
|
24
|
-
#
|
23
|
+
# Schedules reporting jobs and downloads the resulting bulk data reports about
|
24
|
+
# YouTube channels, videos, etc. in the form of CSV files.
|
25
25
|
#
|
26
26
|
# @see https://developers.google.com/youtube/reporting/v1/reports/
|
27
27
|
module YoutubereportingV1
|
28
28
|
VERSION = 'V1'
|
29
|
-
REVISION = '
|
29
|
+
REVISION = '20160301'
|
30
30
|
|
31
31
|
# View monetary and non-monetary YouTube Analytics reports for your YouTube content
|
32
32
|
AUTH_YT_ANALYTICS_MONETARY_READONLY = 'https://www.googleapis.com/auth/yt-analytics-monetary.readonly'
|
@@ -107,8 +107,7 @@ module Google
|
|
107
107
|
# @return [String]
|
108
108
|
attr_accessor :report_type_id
|
109
109
|
|
110
|
-
# The name of the job (max. 100 characters).
|
111
|
-
# will actually be used for
|
110
|
+
# The name of the job (max. 100 characters).
|
112
111
|
# Corresponds to the JSON property `name`
|
113
112
|
# @return [String]
|
114
113
|
attr_accessor :name
|
@@ -22,8 +22,8 @@ module Google
|
|
22
22
|
module YoutubereportingV1
|
23
23
|
# YouTube Reporting API
|
24
24
|
#
|
25
|
-
#
|
26
|
-
#
|
25
|
+
# Schedules reporting jobs and downloads the resulting bulk data reports about
|
26
|
+
# YouTube channels, videos, etc. in the form of CSV files.
|
27
27
|
#
|
28
28
|
# @example
|
29
29
|
# require 'google/apis/youtubereporting_v1'
|
@@ -50,8 +50,8 @@ module Google
|
|
50
50
|
# Method for media download. Download is supported on the URI `/v1/media/`+name`?
|
51
51
|
# alt=media`.
|
52
52
|
# @param [String] resource_name
|
53
|
-
# Name of the media that is being downloaded. See
|
54
|
-
# resource_name
|
53
|
+
# Name of the media that is being downloaded. See ByteStream.ReadRequest.
|
54
|
+
# resource_name.
|
55
55
|
# @param [String] fields
|
56
56
|
# Selector specifying which fields to include in a partial response.
|
57
57
|
# @param [String] quota_user
|
@@ -28,6 +28,53 @@ require 'hurley/addressable'
|
|
28
28
|
module Google
|
29
29
|
module Apis
|
30
30
|
module Core
|
31
|
+
# Helper class for enumerating over a result set requiring multiple fetches
|
32
|
+
class PagedResults
|
33
|
+
include Enumerable
|
34
|
+
|
35
|
+
attr_reader :last_result
|
36
|
+
|
37
|
+
# @param [BaseService] service
|
38
|
+
# Current service instance
|
39
|
+
# @param [Fixnum] max
|
40
|
+
# Maximum number of items to iterate over. Nil if no limit
|
41
|
+
# @param [Boolean] cache
|
42
|
+
# True (default) if results should be cached so multiple iterations can be used.
|
43
|
+
# @param [Symbol] items
|
44
|
+
# Name of the field in the result containing the items. Defaults to :items
|
45
|
+
def initialize(service, max: nil, items: :items, cache: true, &block)
|
46
|
+
@service = service
|
47
|
+
@block = block
|
48
|
+
@max = max
|
49
|
+
@items_field = items
|
50
|
+
if cache
|
51
|
+
@result_cache = Hash.new do |h, k|
|
52
|
+
h[k] = @block.call(k, @service)
|
53
|
+
end
|
54
|
+
@fetch_proc = Proc.new { |token| @result_cache[token] }
|
55
|
+
else
|
56
|
+
@fetch_proc = Proc.new { |token| @block.call(token, @service) }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Iterates over result set, fetching additional pages as needed
|
61
|
+
def each
|
62
|
+
page_token = nil
|
63
|
+
item_count = 0
|
64
|
+
loop do
|
65
|
+
@last_result = @fetch_proc.call(page_token)
|
66
|
+
for item in @last_result.send(@items_field)
|
67
|
+
item_count = item_count + 1
|
68
|
+
break if @max && item_count > @max
|
69
|
+
yield item
|
70
|
+
end
|
71
|
+
break if @max && item_count >= @max
|
72
|
+
break if @last_result.next_page_token.nil? || @last_result.next_page_token == page_token
|
73
|
+
page_token = @last_result.next_page_token
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
31
78
|
# Base service for all APIs. Not to be used directly.
|
32
79
|
#
|
33
80
|
class BaseService
|
@@ -90,12 +137,12 @@ module Google
|
|
90
137
|
# request to the server.
|
91
138
|
#
|
92
139
|
# @example
|
93
|
-
# service.batch do |
|
94
|
-
#
|
140
|
+
# service.batch do |s|
|
141
|
+
# s.get_item(id1) do |res, err|
|
95
142
|
# # process response for 1st call
|
96
143
|
# end
|
97
144
|
# # ...
|
98
|
-
#
|
145
|
+
# s.get_item(idN) do |res, err|
|
99
146
|
# # process response for Nth call
|
100
147
|
# end
|
101
148
|
# end
|
@@ -122,12 +169,12 @@ module Google
|
|
122
169
|
# files, use single requests which use a resumable upload protocol.
|
123
170
|
#
|
124
171
|
# @example
|
125
|
-
# service.batch do |
|
126
|
-
#
|
172
|
+
# service.batch do |s|
|
173
|
+
# s.insert_item(upload_source: 'file1.txt') do |res, err|
|
127
174
|
# # process response for 1st call
|
128
175
|
# end
|
129
176
|
# # ...
|
130
|
-
#
|
177
|
+
# s.insert_item(upload_source: 'fileN.txt') do |res, err|
|
131
178
|
# # process response for Nth call
|
132
179
|
# end
|
133
180
|
# end
|
@@ -191,6 +238,37 @@ module Google
|
|
191
238
|
execute_or_queue_command(command, &block)
|
192
239
|
end
|
193
240
|
|
241
|
+
# Executes a given query with paging, automatically retrieving
|
242
|
+
# additional pages as necessary. Requires a block that returns the
|
243
|
+
# result set of a page. The current page token is supplied as an argument
|
244
|
+
# to the block.
|
245
|
+
#
|
246
|
+
# Note: The returned enumerable also contains a `last_result` field
|
247
|
+
# containing the full result of the last query executed.
|
248
|
+
#
|
249
|
+
# @param [Fixnum] max
|
250
|
+
# Maximum number of items to iterate over. Defaults to nil -- no upper bound.
|
251
|
+
# @param [Symbol] items
|
252
|
+
# Name of the field in the result containing the items. Defaults to :items
|
253
|
+
# @param [Boolean] cache
|
254
|
+
# True (default) if results should be cached so multiple iterations can be used.
|
255
|
+
# @return [Enumerble]
|
256
|
+
# @yield [token, service]
|
257
|
+
# Current page token & service instance
|
258
|
+
# @yieldparam [String] token
|
259
|
+
# Current page token to be used in the query
|
260
|
+
# @yieldparm [service]
|
261
|
+
# Current service instance
|
262
|
+
# @since 0.9.4
|
263
|
+
#
|
264
|
+
# @example Retrieve all files,
|
265
|
+
# file_list = service.fetch_all { |token, s| s.list_files(page_token: token) }
|
266
|
+
# file_list.each { |f| ... }
|
267
|
+
def fetch_all(max: nil, items: :items, cache: true, &block)
|
268
|
+
fail "fetch_all may not be used inside a batch" if batch?
|
269
|
+
return PagedResults.new(self, max: max, items: items, cache: cache, &block)
|
270
|
+
end
|
271
|
+
|
194
272
|
protected
|
195
273
|
|
196
274
|
# Create a new upload command.
|
data/lib/google/apis/version.rb
CHANGED
data/script/generate
CHANGED
@@ -30,6 +30,7 @@ APIS=(adexchangebuyer:v1.4 \
|
|
30
30
|
cloudlatencytest:v2 \
|
31
31
|
cloudmonitoring:v2beta2 \
|
32
32
|
cloudresourcemanager:v1beta1 \
|
33
|
+
cloudresourcemanager:v1 \
|
33
34
|
cloudtrace:v1 \
|
34
35
|
clouduseraccounts:beta \
|
35
36
|
compute:v1 \
|
@@ -58,6 +59,7 @@ APIS=(adexchangebuyer:v1.4 \
|
|
58
59
|
gmail:v1 \
|
59
60
|
groupsmigration:v1 \
|
60
61
|
groupssettings:v1 \
|
62
|
+
iam:v1 \
|
61
63
|
identitytoolkit:v3 \
|
62
64
|
kgsearch:v1 \
|
63
65
|
licensing:v1 \
|
@@ -17,6 +17,7 @@ require 'google/apis/options'
|
|
17
17
|
require 'google/apis/core/base_service'
|
18
18
|
require 'google/apis/core/json_representation'
|
19
19
|
require 'hurley/test'
|
20
|
+
require 'ostruct'
|
20
21
|
|
21
22
|
RSpec.describe Google::Apis::Core::BaseService do
|
22
23
|
include TestHelpers
|
@@ -243,5 +244,70 @@ EOF
|
|
243
244
|
end
|
244
245
|
end.to raise_error(Google::Apis::ClientError)
|
245
246
|
end
|
247
|
+
|
248
|
+
context 'with fetch_all' do
|
249
|
+
let(:responses) do
|
250
|
+
data = {}
|
251
|
+
data[nil] = OpenStruct.new(next_page_token: 'p1', items: ['a', 'b', 'c'], alt_items: [1, 2 , 3])
|
252
|
+
data['p1'] = OpenStruct.new(next_page_token: 'p2', items: ['d', 'e', 'f'], alt_items: [4, 5, 6])
|
253
|
+
data['p2'] = OpenStruct.new(next_page_token: nil, items: ['g', 'h', 'i'], alt_items: [7,8, 9])
|
254
|
+
data
|
255
|
+
end
|
256
|
+
|
257
|
+
let(:items) { service.fetch_all { |token| responses[token] } }
|
258
|
+
|
259
|
+
it 'should fetch pages until next page token is nil' do
|
260
|
+
expect(items).to contain_exactly('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i')
|
261
|
+
end
|
262
|
+
|
263
|
+
it 'should stop on repeated page token' do
|
264
|
+
responses['p2'].next_page_token = 'p2'
|
265
|
+
expect(items).to contain_exactly('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i')
|
266
|
+
end
|
267
|
+
|
268
|
+
it 'should allow selecting another field for items' do
|
269
|
+
expect(service.fetch_all(items: :alt_items) { |token| responses[token] } ).to contain_exactly(1, 2, 3, 4, 5, 6, 7, 8, 9)
|
270
|
+
end
|
271
|
+
|
272
|
+
it 'should allow limiting the number of items to fetch' do
|
273
|
+
expect(service.fetch_all(max: 5) { |token| responses[token] } ).to contain_exactly('a', 'b', 'c', 'd', 'e')
|
274
|
+
end
|
275
|
+
|
276
|
+
it 'should yield the next token' do
|
277
|
+
expect do |b|
|
278
|
+
service.fetch_all do |token|
|
279
|
+
b.to_proc.call(token)
|
280
|
+
responses[token]
|
281
|
+
end.count
|
282
|
+
end.to yield_successive_args(nil, 'p1', 'p2')
|
283
|
+
end
|
284
|
+
|
285
|
+
it 'should cache results' do
|
286
|
+
count = 0
|
287
|
+
items = service.fetch_all do |token|
|
288
|
+
count = count + 1
|
289
|
+
responses[token]
|
290
|
+
end
|
291
|
+
|
292
|
+
items.each{ |i| puts i }
|
293
|
+
items.each{ |i| puts i }
|
294
|
+
|
295
|
+
expect(count).to eq 3
|
296
|
+
end
|
297
|
+
|
298
|
+
it 'should allow disabling caching' do
|
299
|
+
count = 0
|
300
|
+
items = service.fetch_all(cache: false) do |token|
|
301
|
+
count = count + 1
|
302
|
+
responses[token]
|
303
|
+
end
|
304
|
+
|
305
|
+
items.each{ |i| puts i }
|
306
|
+
items.each{ |i| puts i }
|
307
|
+
|
308
|
+
expect(count).to eq 6
|
309
|
+
end
|
310
|
+
|
311
|
+
end
|
246
312
|
end
|
247
313
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-api-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Bazyl
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-
|
14
|
+
date: 2016-03-11 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: representable
|
@@ -275,6 +275,10 @@ files:
|
|
275
275
|
- generated/google/apis/cloudmonitoring_v2beta2/classes.rb
|
276
276
|
- generated/google/apis/cloudmonitoring_v2beta2/representations.rb
|
277
277
|
- generated/google/apis/cloudmonitoring_v2beta2/service.rb
|
278
|
+
- generated/google/apis/cloudresourcemanager_v1.rb
|
279
|
+
- generated/google/apis/cloudresourcemanager_v1/classes.rb
|
280
|
+
- generated/google/apis/cloudresourcemanager_v1/representations.rb
|
281
|
+
- generated/google/apis/cloudresourcemanager_v1/service.rb
|
278
282
|
- generated/google/apis/cloudresourcemanager_v1beta1.rb
|
279
283
|
- generated/google/apis/cloudresourcemanager_v1beta1/classes.rb
|
280
284
|
- generated/google/apis/cloudresourcemanager_v1beta1/representations.rb
|
@@ -407,6 +411,10 @@ files:
|
|
407
411
|
- generated/google/apis/groupssettings_v1/classes.rb
|
408
412
|
- generated/google/apis/groupssettings_v1/representations.rb
|
409
413
|
- generated/google/apis/groupssettings_v1/service.rb
|
414
|
+
- generated/google/apis/iam_v1.rb
|
415
|
+
- generated/google/apis/iam_v1/classes.rb
|
416
|
+
- generated/google/apis/iam_v1/representations.rb
|
417
|
+
- generated/google/apis/iam_v1/service.rb
|
410
418
|
- generated/google/apis/identitytoolkit_v3.rb
|
411
419
|
- generated/google/apis/identitytoolkit_v3/classes.rb
|
412
420
|
- generated/google/apis/identitytoolkit_v3/representations.rb
|