google-cloud-bigquery 0.20.1 → 0.20.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f16696b5a90b556871480222793c4e66d27c9fe6
|
4
|
+
data.tar.gz: b6c55807e67d5888773bccf1dabee042b23a9abe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f07cece664a25f4962b72aef938fc39ff560e2aefbe32eabb375f8e98303f016d032fddce70de0a8f8887b2d4e49f5aa3e0b1e358a09a675d650a082d8984d61
|
7
|
+
data.tar.gz: 7b3ebbc30c72952601caf1f293fb8913ce51e9be6b22e2b783baaf7d26b378648009a7bec603b94823d2558befbe9cadcd362de701c3b71905704f45bc0b6d0c
|
@@ -20,6 +20,7 @@ require "google/cloud/bigquery/credentials"
|
|
20
20
|
require "google/cloud/bigquery/dataset"
|
21
21
|
require "google/cloud/bigquery/job"
|
22
22
|
require "google/cloud/bigquery/query_data"
|
23
|
+
require "google/cloud/bigquery/project/list"
|
23
24
|
|
24
25
|
module Google
|
25
26
|
module Cloud
|
@@ -35,7 +36,12 @@ module Google
|
|
35
36
|
# Google BigQuery. {Google::Cloud::Bigquery::Dataset} objects are created,
|
36
37
|
# accessed, and deleted by Google::Cloud::Bigquery::Project.
|
37
38
|
#
|
38
|
-
# See {Google::Cloud#bigquery}
|
39
|
+
# See {Google::Cloud#bigquery}.
|
40
|
+
#
|
41
|
+
# @attr_reader [String, nil] name The descriptive name of the project.
|
42
|
+
# Can only be present if the project was retrieved with {#projects}.
|
43
|
+
# @attr_reader [Integer, nil] numeric_id The numeric ID of the project.
|
44
|
+
# Can only be present if the project was retrieved with {#projects}.
|
39
45
|
#
|
40
46
|
# @example
|
41
47
|
# require "google/cloud"
|
@@ -50,6 +56,8 @@ module Google
|
|
50
56
|
# @private The Service object.
|
51
57
|
attr_accessor :service
|
52
58
|
|
59
|
+
attr_reader :name, :numeric_id
|
60
|
+
|
53
61
|
##
|
54
62
|
# Creates a new Service instance.
|
55
63
|
#
|
@@ -468,6 +476,75 @@ module Google
|
|
468
476
|
Job::List.from_gapi gapi, service, all, max, filter
|
469
477
|
end
|
470
478
|
|
479
|
+
##
|
480
|
+
# Retrieves the list of all projects for which the currently authorized
|
481
|
+
# account has been granted any project role. The returned project
|
482
|
+
# instances share the same credentials as the project used to retrieve
|
483
|
+
# them, but lazily create a new API connection for interactions with the
|
484
|
+
# BigQuery service.
|
485
|
+
#
|
486
|
+
# @param [String] token A previously-returned page token representing
|
487
|
+
# part of the larger set of results to view.
|
488
|
+
# @param [Integer] max Maximum number of projects to return.
|
489
|
+
#
|
490
|
+
# @return [Array<Google::Cloud::Bigquery::Project>] (See
|
491
|
+
# {Google::Cloud::Bigquery::Project::List})
|
492
|
+
#
|
493
|
+
# @example
|
494
|
+
# require "google/cloud"
|
495
|
+
#
|
496
|
+
# gcloud = Google::Cloud.new
|
497
|
+
# bigquery = gcloud.bigquery
|
498
|
+
#
|
499
|
+
# projects = bigquery.projects
|
500
|
+
# projects.each do |project|
|
501
|
+
# puts project.name
|
502
|
+
# project.datasets.all.each do |dataset|
|
503
|
+
# puts dataset.name
|
504
|
+
# end
|
505
|
+
# end
|
506
|
+
#
|
507
|
+
# @example Retrieve all projects: (See {Project::List#all})
|
508
|
+
# require "google/cloud"
|
509
|
+
#
|
510
|
+
# gcloud = Google::Cloud.new
|
511
|
+
# bigquery = gcloud.bigquery
|
512
|
+
#
|
513
|
+
# projects = bigquery.projects
|
514
|
+
#
|
515
|
+
# projects.all do |project|
|
516
|
+
# puts project.name
|
517
|
+
# project.datasets.all.each do |dataset|
|
518
|
+
# puts dataset.name
|
519
|
+
# end
|
520
|
+
# end
|
521
|
+
#
|
522
|
+
def projects token: nil, max: nil
|
523
|
+
ensure_service!
|
524
|
+
options = { token: token, max: max }
|
525
|
+
gapi = service.list_projects options
|
526
|
+
Project::List.from_gapi gapi, service, max
|
527
|
+
end
|
528
|
+
|
529
|
+
##
|
530
|
+
# @private New Project from a Google API Client object, using the
|
531
|
+
# same Credentials as this project.
|
532
|
+
def self.from_gapi gapi, service
|
533
|
+
project_service = Service.new gapi.project_reference.project_id,
|
534
|
+
service.credentials,
|
535
|
+
retries: service.retries,
|
536
|
+
timeout: service.timeout
|
537
|
+
new(project_service).tap do |p|
|
538
|
+
p.instance_variable_set :@name, gapi.friendly_name
|
539
|
+
|
540
|
+
# TODO: remove `Integer` and set normally after migrating to Gax or
|
541
|
+
# to google-api-client 0.10 (See google/google-api-ruby-client#439)
|
542
|
+
if gapi.numeric_id
|
543
|
+
p.instance_variable_set :@numeric_id, Integer(gapi.numeric_id)
|
544
|
+
end
|
545
|
+
end
|
546
|
+
end
|
547
|
+
|
471
548
|
protected
|
472
549
|
|
473
550
|
##
|
@@ -0,0 +1,171 @@
|
|
1
|
+
# Copyright 2016 Google Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
require "delegate"
|
17
|
+
|
18
|
+
module Google
|
19
|
+
module Cloud
|
20
|
+
module Bigquery
|
21
|
+
class Project
|
22
|
+
##
|
23
|
+
# Project::List is a special case Array with additional values.
|
24
|
+
class List < DelegateClass(::Array)
|
25
|
+
##
|
26
|
+
# If not empty, indicates that there are more records that match
|
27
|
+
# the request and this value should be passed to continue.
|
28
|
+
attr_accessor :token
|
29
|
+
|
30
|
+
# A hash of this page of results.
|
31
|
+
attr_accessor :etag
|
32
|
+
|
33
|
+
##
|
34
|
+
# @private Create a new Project::List with an array of
|
35
|
+
# Project instances.
|
36
|
+
def initialize arr = []
|
37
|
+
super arr
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# Whether there is a next page of projects.
|
42
|
+
#
|
43
|
+
# @return [Boolean]
|
44
|
+
#
|
45
|
+
# @example
|
46
|
+
# require "google/cloud"
|
47
|
+
#
|
48
|
+
# gcloud = Google::Cloud.new
|
49
|
+
# bigquery = gcloud.bigquery
|
50
|
+
#
|
51
|
+
# projects = bigquery.projects
|
52
|
+
# if projects.next?
|
53
|
+
# next_projects = projects.next
|
54
|
+
# end
|
55
|
+
def next?
|
56
|
+
!token.nil?
|
57
|
+
end
|
58
|
+
|
59
|
+
##
|
60
|
+
# Retrieve the next page of projects.
|
61
|
+
#
|
62
|
+
# @return [Project::List]
|
63
|
+
#
|
64
|
+
# @example
|
65
|
+
# require "google/cloud"
|
66
|
+
#
|
67
|
+
# gcloud = Google::Cloud.new
|
68
|
+
# bigquery = gcloud.bigquery
|
69
|
+
#
|
70
|
+
# projects = bigquery.projects
|
71
|
+
# if projects.next?
|
72
|
+
# next_projects = projects.next
|
73
|
+
# end
|
74
|
+
def next
|
75
|
+
return nil unless next?
|
76
|
+
ensure_service!
|
77
|
+
options = { all: @hidden, token: token, max: @max }
|
78
|
+
gapi = @service.list_projects options
|
79
|
+
self.class.from_gapi gapi, @service, @max
|
80
|
+
end
|
81
|
+
|
82
|
+
##
|
83
|
+
# Retrieves all projects by repeatedly loading {#next} until {#next?}
|
84
|
+
# returns `false`. Calls the given block once for each project, which
|
85
|
+
# is passed as the parameter.
|
86
|
+
#
|
87
|
+
# An Enumerator is returned if no block is given.
|
88
|
+
#
|
89
|
+
# This method may make several API calls until all projects are
|
90
|
+
# retrieved. Be sure to use as narrow a search criteria as possible.
|
91
|
+
# Please use with caution.
|
92
|
+
#
|
93
|
+
# @param [Integer] request_limit The upper limit of API requests to
|
94
|
+
# make to load all projects. Default is no limit.
|
95
|
+
# @yield [project] The block for accessing each project.
|
96
|
+
# @yieldparam [Project] project The project object.
|
97
|
+
#
|
98
|
+
# @return [Enumerator]
|
99
|
+
#
|
100
|
+
# @example Iterating each result by passing a block:
|
101
|
+
# require "google/cloud"
|
102
|
+
#
|
103
|
+
# gcloud = Google::Cloud.new
|
104
|
+
# bigquery = gcloud.bigquery
|
105
|
+
#
|
106
|
+
# bigquery.projects.all do |project|
|
107
|
+
# puts project.name
|
108
|
+
# end
|
109
|
+
#
|
110
|
+
# @example Using the enumerator by not passing a block:
|
111
|
+
# require "google/cloud"
|
112
|
+
#
|
113
|
+
# gcloud = Google::Cloud.new
|
114
|
+
# bigquery = gcloud.bigquery
|
115
|
+
#
|
116
|
+
# all_project_ids = bigquery.projects.all.map do |project|
|
117
|
+
# project.name
|
118
|
+
# end
|
119
|
+
#
|
120
|
+
# @example Limit the number of API calls made:
|
121
|
+
# require "google/cloud"
|
122
|
+
#
|
123
|
+
# gcloud = Google::Cloud.new
|
124
|
+
# bigquery = gcloud.bigquery
|
125
|
+
#
|
126
|
+
# bigquery.projects.all(request_limit: 10) do |project|
|
127
|
+
# puts project.name
|
128
|
+
# end
|
129
|
+
#
|
130
|
+
def all request_limit: nil
|
131
|
+
request_limit = request_limit.to_i if request_limit
|
132
|
+
unless block_given?
|
133
|
+
return enum_for(:all, request_limit: request_limit)
|
134
|
+
end
|
135
|
+
results = self
|
136
|
+
loop do
|
137
|
+
results.each { |r| yield r }
|
138
|
+
if request_limit
|
139
|
+
request_limit -= 1
|
140
|
+
break if request_limit < 0
|
141
|
+
end
|
142
|
+
break unless results.next?
|
143
|
+
results = results.next
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
##
|
148
|
+
# @private New Project::List from a response object.
|
149
|
+
def self.from_gapi gapi_list, service, max = nil
|
150
|
+
projects = List.new(Array(gapi_list.projects).map do |gapi_object|
|
151
|
+
Project.from_gapi gapi_object, service
|
152
|
+
end)
|
153
|
+
projects.instance_variable_set :@token, gapi_list.next_page_token
|
154
|
+
projects.instance_variable_set :@etag, gapi_list.etag
|
155
|
+
projects.instance_variable_set :@service, service
|
156
|
+
projects.instance_variable_set :@max, max
|
157
|
+
projects
|
158
|
+
end
|
159
|
+
|
160
|
+
protected
|
161
|
+
|
162
|
+
##
|
163
|
+
# Raise an error unless an active service is available.
|
164
|
+
def ensure_service!
|
165
|
+
fail "Must have active connection" unless @service
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
@@ -36,25 +36,32 @@ module Google
|
|
36
36
|
# @private
|
37
37
|
attr_accessor :credentials
|
38
38
|
|
39
|
+
# @private
|
40
|
+
attr_reader :retries, :timeout
|
41
|
+
|
39
42
|
##
|
40
43
|
# Creates a new Service instance.
|
41
44
|
def initialize project, credentials, retries: nil, timeout: nil
|
42
45
|
@project = project
|
43
46
|
@credentials = credentials
|
44
47
|
@credentials = credentials
|
45
|
-
@
|
46
|
-
@
|
47
|
-
@service.client_options.application_version = \
|
48
|
-
Google::Cloud::Bigquery::VERSION
|
49
|
-
@service.request_options.retries = retries || 3
|
50
|
-
@service.request_options.timeout_sec = timeout
|
51
|
-
@service.request_options.open_timeout_sec = timeout
|
52
|
-
@service.authorization = @credentials.client
|
48
|
+
@retries = retries
|
49
|
+
@timeout = timeout
|
53
50
|
end
|
54
51
|
|
55
52
|
def service
|
56
53
|
return mocked_service if mocked_service
|
57
|
-
@service
|
54
|
+
@service ||= begin
|
55
|
+
service = API::BigqueryService.new
|
56
|
+
service.client_options.application_name = "google-cloud-bigquery"
|
57
|
+
service.client_options.application_version = \
|
58
|
+
Google::Cloud::Bigquery::VERSION
|
59
|
+
service.request_options.retries = @retries || 3
|
60
|
+
service.request_options.timeout_sec = @timeout
|
61
|
+
service.request_options.open_timeout_sec = @timeout
|
62
|
+
service.authorization = @credentials.client
|
63
|
+
service
|
64
|
+
end
|
58
65
|
end
|
59
66
|
attr_accessor :mocked_service
|
60
67
|
|
@@ -278,6 +285,15 @@ module Google
|
|
278
285
|
Google::Apis::BigqueryV2::TableReference.new new_table_ref_hash
|
279
286
|
end
|
280
287
|
|
288
|
+
##
|
289
|
+
# Lists all projects to which you have been granted any project role.
|
290
|
+
def list_projects options = {}
|
291
|
+
execute do
|
292
|
+
service.list_projects max_results: options[:max],
|
293
|
+
page_token: options[:token]
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
281
297
|
def inspect
|
282
298
|
"#{self.class}(#{@project})"
|
283
299
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-bigquery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.20.
|
4
|
+
version: 0.20.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-10-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|
@@ -151,6 +151,20 @@ dependencies:
|
|
151
151
|
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0.9'
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: yard-doctest
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - "~>"
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: 0.1.6
|
161
|
+
type: :development
|
162
|
+
prerelease: false
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - "~>"
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: 0.1.6
|
154
168
|
description: google-cloud-bigquery is the official library for Google BigQuery.
|
155
169
|
email:
|
156
170
|
- mike@blowmage.com
|
@@ -173,6 +187,7 @@ files:
|
|
173
187
|
- lib/google/cloud/bigquery/job/list.rb
|
174
188
|
- lib/google/cloud/bigquery/load_job.rb
|
175
189
|
- lib/google/cloud/bigquery/project.rb
|
190
|
+
- lib/google/cloud/bigquery/project/list.rb
|
176
191
|
- lib/google/cloud/bigquery/query_data.rb
|
177
192
|
- lib/google/cloud/bigquery/query_job.rb
|
178
193
|
- lib/google/cloud/bigquery/schema.rb
|
@@ -201,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
216
|
version: '0'
|
202
217
|
requirements: []
|
203
218
|
rubyforge_project:
|
204
|
-
rubygems_version: 2.
|
219
|
+
rubygems_version: 2.5.1
|
205
220
|
signing_key:
|
206
221
|
specification_version: 4
|
207
222
|
summary: API Client library for Google BigQuery
|