google-api-client 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- Yzk3YTYzM2JmNDBhNTAyODAyMjJiMDE1YTYzZjRjMjJhZTE1NjEzMQ==
5
- data.tar.gz: !binary |-
6
- ZGJlZTRjNzY4NzY0ZjU5NGY4N2EwYTM0Yzg1OTk1MzY1MDhiOGY2OA==
2
+ SHA1:
3
+ metadata.gz: 32e794e627d99cf204a2c62e8479fb6c62fba10b
4
+ data.tar.gz: 617cc09c435456fbcde61e58499538f787125c21
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- N2I4M2JmYTQ5OTQ0ZjMyZTM4MmQyOGE3ZWQ5MDFiZmY5YjlkMmM4ZGRlN2M0
10
- OWQzN2Q1MzVhZTNkM2M1MTkyYmNlMWY4ZGI4MTMyMzA3ZDI2YzQ5ZmYyZGZm
11
- NTkwNTNiNGJiNzMxN2U2NmE4YWFjYWFjNGRhYmEzMmUxMmY3NGE=
12
- data.tar.gz: !binary |-
13
- MmYxMjg2MWYxOTg5ODExYWFhOGQxYmRmZDI4ZGVmOTkxZDExNzllYjViNzE3
14
- ZDIzYTc0ZjEzYWU1M2I2YTc4MjdlZTVjOGNjMDY1NjEwZDJkMjYyNzc5Yzhi
15
- OTkyMWQ3NzJjMjljOWQ2OTY1Nzk1ODFmMzU0NmM4MDA0MzdiMTQ=
6
+ metadata.gz: 34e2ea99e0ef2ae2de28181077a9204a937b8bf0a25971f04584b06f5ab347d28d358623baf2d49dc8dc5808d5c459263fb9662cf3c6ae5ea93ca7c82ae78aa6
7
+ data.tar.gz: 15887c8abbc838a33cbfa560cfeb3d996e54c0b9f949c073daf9d15764514aa733a8f038f37622b01579ad64ac8ad30814ac7915606b5999ee98ed530b157a92
@@ -1,3 +1,7 @@
1
+ # 0.8.3
2
+ * Adds support for authorization via Application Default Credentials.
3
+ # Adds support for tracking coverage on coveralls.io
4
+
1
5
  # 0.8.2
2
6
  * Fixes for file storage and missing cacerts file
3
7
 
data/README.md CHANGED
@@ -104,6 +104,19 @@ Credentials can be managed at the connection level, as shown, or supplied on a p
104
104
 
105
105
  For server-to-server interactions, like those between a web application and Google Cloud Storage, Prediction, or BigQuery APIs, use service accounts.
106
106
 
107
+ As of version 0.8.3, service accounts can be configured using
108
+ [Application Default Credentials][1], which rely on the credentials being
109
+ available in a well-known location. If the credentials are not present
110
+ and it's being used on a Compute Engine VM, it will use the VM's default credentials.
111
+
112
+ ```ruby
113
+ client.authorization = :google_app_default # in a later version, this will become the default
114
+ client.authorization.fetch_access_token!
115
+ client.execute(...)
116
+ ```
117
+
118
+ This is simpler API to use than in previous versions, although that is still available:
119
+
107
120
  ```ruby
108
121
  key = Google::APIClient::KeyUtils.load_from_pkcs12('client.p12', 'notasecret')
109
122
  client.authorization = Signet::OAuth2::Client.new(
@@ -201,3 +214,5 @@ See the full list of [samples on Github](https://github.com/google/google-api-ru
201
214
  ## Support
202
215
 
203
216
  Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
217
+
218
+ [1]: https://developers.google.com/accounts/docs/application-default-credentials
data/Rakefile CHANGED
@@ -1,7 +1,9 @@
1
+ # -*- ruby -*-
1
2
  lib_dir = File.expand_path('../lib', __FILE__)
2
3
  $LOAD_PATH.unshift(lib_dir)
3
4
  $LOAD_PATH.uniq!
4
5
 
6
+ require 'bundler/gem_tasks'
5
7
  require 'rubygems'
6
8
  require 'rake'
7
9
 
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.add_runtime_dependency 'addressable', '~> 2.3'
27
27
  s.add_runtime_dependency 'signet', '~> 0.6'
28
28
  s.add_runtime_dependency 'faraday', '~> 0.9'
29
+ s.add_runtime_dependency 'googleauth', '~> 0.3'
29
30
  s.add_runtime_dependency 'multi_json', '~> 1.10'
30
31
  s.add_runtime_dependency 'autoparse', "~> 0.3"
31
32
  s.add_runtime_dependency 'extlib', '~> 0.9'
@@ -37,5 +38,6 @@ Gem::Specification.new do |s|
37
38
  s.add_development_dependency 'yard', '~> 0.8'
38
39
  s.add_development_dependency 'rspec', '~> 3.1'
39
40
  s.add_development_dependency 'kramdown', '~> 1.5'
40
- s.add_development_dependency 'simplecov', '~> 0.9'
41
+ s.add_development_dependency 'simplecov', '~> 0.9.2'
42
+ s.add_development_dependency 'coveralls', '~> 0.7.11'
41
43
  end
@@ -41,7 +41,7 @@ module Google
41
41
  # This class manages APIs communication.
42
42
  class APIClient
43
43
  include Google::APIClient::Logging
44
-
44
+
45
45
  ##
46
46
  # Creates a new Google API client.
47
47
  #
@@ -54,13 +54,16 @@ module Google
54
54
  # <li><code>:two_legged_oauth_1</code></li>
55
55
  # <li><code>:oauth_1</code></li>
56
56
  # <li><code>:oauth_2</code></li>
57
+ # <li><code>:google_app_default</code></li>
57
58
  # </ul>
58
59
  # @option options [Boolean] :auto_refresh_token (true)
59
60
  # The setting that controls whether or not the api client attempts to
60
- # refresh authorization when a 401 is hit in #execute. If the token does
61
+ # refresh authorization when a 401 is hit in #execute. If the token does
61
62
  # not support it, this option is ignored.
62
63
  # @option options [String] :application_name
63
64
  # The name of the application using the client.
65
+ # @option options [String | Array | nil] :scope
66
+ # The scope(s) used when using google application default credentials
64
67
  # @option options [String] :application_version
65
68
  # The version number of the application using the client.
66
69
  # @option options [String] :user_agent
@@ -83,7 +86,7 @@ module Google
83
86
  # Pass through of options to set on the Faraday connection
84
87
  def initialize(options={})
85
88
  logger.debug { "#{self.class} - Initializing client with options #{options}" }
86
-
89
+
87
90
  # Normalize key to String to allow indifferent access.
88
91
  options = options.inject({}) do |accu, (key, value)|
89
92
  accu[key.to_sym] = value
@@ -114,6 +117,9 @@ module Google
114
117
  # default authentication mechanisms.
115
118
  self.authorization =
116
119
  options.key?(:authorization) ? options[:authorization] : :oauth_2
120
+ if !options['scope'].nil? and self.authorization.respond_to?(:scope=)
121
+ self.authorization.scope = options['scope']
122
+ end
117
123
  self.auto_refresh_token = options.fetch(:auto_refresh_token) { true }
118
124
  self.key = options[:key]
119
125
  self.user_ip = options[:user_ip]
@@ -174,6 +180,10 @@ module Google
174
180
  :client_credential_secret => nil,
175
181
  :two_legged => true
176
182
  )
183
+ when :google_app_default
184
+ require 'googleauth'
185
+ new_authorization = Google::Auth.get_application_default
186
+
177
187
  when :oauth_2
178
188
  require 'signet/oauth_2/client'
179
189
  # NOTE: Do not rely on this default value, as it may change
@@ -204,7 +214,7 @@ module Google
204
214
 
205
215
  ##
206
216
  # The setting that controls whether or not the api client attempts to
207
- # refresh authorization when a 401 is hit in #execute.
217
+ # refresh authorization when a 401 is hit in #execute.
208
218
  #
209
219
  # @return [Boolean]
210
220
  attr_accessor :auto_refresh_token
@@ -251,7 +261,7 @@ module Google
251
261
 
252
262
  ##
253
263
  # Number of times to retry on recoverable errors
254
- #
264
+ #
255
265
  # @return [FixNum]
256
266
  # Number of retries
257
267
  attr_accessor :retries
@@ -461,7 +471,7 @@ module Google
461
471
  # Verifies an ID token against a server certificate. Used to ensure that
462
472
  # an ID token supplied by an untrusted client-side mechanism is valid.
463
473
  # Raises an error if the token is invalid or missing.
464
- #
474
+ #
465
475
  # @deprecated Use the google-id-token gem for verifying JWTs
466
476
  def verify_id_token!
467
477
  require 'jwt'
@@ -570,7 +580,7 @@ module Google
570
580
  # - (TrueClass, FalseClass) :authenticated (default: true) -
571
581
  # `true` if the request must be signed or somehow
572
582
  # authenticated, `false` otherwise.
573
- # - (TrueClass, FalseClass) :gzip (default: true) -
583
+ # - (TrueClass, FalseClass) :gzip (default: true) -
574
584
  # `true` if gzip enabled, `false` otherwise.
575
585
  # - (FixNum) :retries -
576
586
  # # of times to retry on recoverable errors
@@ -610,7 +620,7 @@ module Google
610
620
  options.update(params.shift) if params.size > 0
611
621
  request = self.generate_request(options)
612
622
  end
613
-
623
+
614
624
  request.headers['User-Agent'] ||= '' + self.user_agent unless self.user_agent.nil?
615
625
  request.headers['Accept-Encoding'] ||= 'gzip' unless options[:gzip] == false
616
626
  request.headers['Content-Type'] ||= ''
@@ -619,11 +629,11 @@ module Google
619
629
 
620
630
  connection = options[:connection] || self.connection
621
631
  request.authorization = options[:authorization] || self.authorization unless options[:authenticated] == false
622
-
632
+
623
633
  tries = 1 + (options[:retries] || self.retries)
624
634
  attempt = 0
625
635
 
626
- Retriable.retriable :tries => tries,
636
+ Retriable.retriable :tries => tries,
627
637
  :on => [TransmissionError],
628
638
  :on_retry => client_error_handler,
629
639
  :interval => lambda {|attempts| (2 ** attempts) + rand} do
@@ -632,7 +642,7 @@ module Google
632
642
  # This 2nd level retriable only catches auth errors, and supports 1 retry, which allows
633
643
  # auth to be re-attempted without having to retry all sorts of other failures like
634
644
  # NotFound, etc
635
- Retriable.retriable :tries => ((expired_auth_retry || tries > 1) && attempt == 1) ? 2 : 1,
645
+ Retriable.retriable :tries => ((expired_auth_retry || tries > 1) && attempt == 1) ? 2 : 1,
636
646
  :on => [AuthorizationError],
637
647
  :on_retry => authorization_error_handler(request.authorization) do
638
648
  result = request.send(connection, true)
@@ -699,7 +709,7 @@ module Google
699
709
  end
700
710
  return Addressable::Template.new(@base_uri + template).expand(mapping)
701
711
  end
702
-
712
+
703
713
 
704
714
  ##
705
715
  # Returns on proc for special processing of retries for authorization errors
@@ -709,7 +719,7 @@ module Google
709
719
  # OAuth 2 credentials
710
720
  # @return [Proc]
711
721
  def authorization_error_handler(authorization)
712
- can_refresh = authorization.respond_to?(:refresh_token) && auto_refresh_token
722
+ can_refresh = authorization.respond_to?(:refresh_token) && auto_refresh_token
713
723
  Proc.new do |exception, tries|
714
724
  next unless exception.kind_of?(AuthorizationError)
715
725
  if can_refresh
@@ -18,7 +18,7 @@ module Google
18
18
  module VERSION
19
19
  MAJOR = 0
20
20
  MINOR = 8
21
- TINY = 2
21
+ TINY = 3
22
22
  PATCH = nil
23
23
  STRING = [MAJOR, MINOR, TINY, PATCH].compact.join('.')
24
24
  end
@@ -6,7 +6,9 @@ require 'faraday'
6
6
 
7
7
  begin
8
8
  require 'simplecov'
9
+ require 'coveralls'
9
10
 
11
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
10
12
  SimpleCov.start
11
13
  rescue LoadError
12
14
  # SimpleCov missing, so just run specs with no coverage.
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.8.2
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Aman
@@ -9,204 +9,232 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-10 00:00:00.000000000 Z
12
+ date: 2015-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '2.3'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '2.3'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: signet
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0.6'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0.6'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: faraday
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0.9'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0.9'
56
+ - !ruby/object:Gem::Dependency
57
+ name: googleauth
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.3'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.3'
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: multi_json
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
- - - ~>
74
+ - - "~>"
61
75
  - !ruby/object:Gem::Version
62
76
  version: '1.10'
63
77
  type: :runtime
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
- - - ~>
81
+ - - "~>"
68
82
  - !ruby/object:Gem::Version
69
83
  version: '1.10'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: autoparse
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
- - - ~>
88
+ - - "~>"
75
89
  - !ruby/object:Gem::Version
76
90
  version: '0.3'
77
91
  type: :runtime
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
- - - ~>
95
+ - - "~>"
82
96
  - !ruby/object:Gem::Version
83
97
  version: '0.3'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: extlib
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
- - - ~>
102
+ - - "~>"
89
103
  - !ruby/object:Gem::Version
90
104
  version: '0.9'
91
105
  type: :runtime
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
- - - ~>
109
+ - - "~>"
96
110
  - !ruby/object:Gem::Version
97
111
  version: '0.9'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: launchy
100
114
  requirement: !ruby/object:Gem::Requirement
101
115
  requirements:
102
- - - ~>
116
+ - - "~>"
103
117
  - !ruby/object:Gem::Version
104
118
  version: '2.4'
105
119
  type: :runtime
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
108
122
  requirements:
109
- - - ~>
123
+ - - "~>"
110
124
  - !ruby/object:Gem::Version
111
125
  version: '2.4'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: retriable
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
- - - ~>
130
+ - - "~>"
117
131
  - !ruby/object:Gem::Version
118
132
  version: '1.4'
119
133
  type: :runtime
120
134
  prerelease: false
121
135
  version_requirements: !ruby/object:Gem::Requirement
122
136
  requirements:
123
- - - ~>
137
+ - - "~>"
124
138
  - !ruby/object:Gem::Version
125
139
  version: '1.4'
126
140
  - !ruby/object:Gem::Dependency
127
141
  name: activesupport
128
142
  requirement: !ruby/object:Gem::Requirement
129
143
  requirements:
130
- - - ! '>='
144
+ - - ">="
131
145
  - !ruby/object:Gem::Version
132
146
  version: '3.2'
133
147
  type: :runtime
134
148
  prerelease: false
135
149
  version_requirements: !ruby/object:Gem::Requirement
136
150
  requirements:
137
- - - ! '>='
151
+ - - ">="
138
152
  - !ruby/object:Gem::Version
139
153
  version: '3.2'
140
154
  - !ruby/object:Gem::Dependency
141
155
  name: rake
142
156
  requirement: !ruby/object:Gem::Requirement
143
157
  requirements:
144
- - - ~>
158
+ - - "~>"
145
159
  - !ruby/object:Gem::Version
146
160
  version: '10.0'
147
161
  type: :development
148
162
  prerelease: false
149
163
  version_requirements: !ruby/object:Gem::Requirement
150
164
  requirements:
151
- - - ~>
165
+ - - "~>"
152
166
  - !ruby/object:Gem::Version
153
167
  version: '10.0'
154
168
  - !ruby/object:Gem::Dependency
155
169
  name: yard
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
- - - ~>
172
+ - - "~>"
159
173
  - !ruby/object:Gem::Version
160
174
  version: '0.8'
161
175
  type: :development
162
176
  prerelease: false
163
177
  version_requirements: !ruby/object:Gem::Requirement
164
178
  requirements:
165
- - - ~>
179
+ - - "~>"
166
180
  - !ruby/object:Gem::Version
167
181
  version: '0.8'
168
182
  - !ruby/object:Gem::Dependency
169
183
  name: rspec
170
184
  requirement: !ruby/object:Gem::Requirement
171
185
  requirements:
172
- - - ~>
186
+ - - "~>"
173
187
  - !ruby/object:Gem::Version
174
188
  version: '3.1'
175
189
  type: :development
176
190
  prerelease: false
177
191
  version_requirements: !ruby/object:Gem::Requirement
178
192
  requirements:
179
- - - ~>
193
+ - - "~>"
180
194
  - !ruby/object:Gem::Version
181
195
  version: '3.1'
182
196
  - !ruby/object:Gem::Dependency
183
197
  name: kramdown
184
198
  requirement: !ruby/object:Gem::Requirement
185
199
  requirements:
186
- - - ~>
200
+ - - "~>"
187
201
  - !ruby/object:Gem::Version
188
202
  version: '1.5'
189
203
  type: :development
190
204
  prerelease: false
191
205
  version_requirements: !ruby/object:Gem::Requirement
192
206
  requirements:
193
- - - ~>
207
+ - - "~>"
194
208
  - !ruby/object:Gem::Version
195
209
  version: '1.5'
196
210
  - !ruby/object:Gem::Dependency
197
211
  name: simplecov
198
212
  requirement: !ruby/object:Gem::Requirement
199
213
  requirements:
200
- - - ~>
214
+ - - "~>"
201
215
  - !ruby/object:Gem::Version
202
- version: '0.9'
216
+ version: 0.9.2
203
217
  type: :development
204
218
  prerelease: false
205
219
  version_requirements: !ruby/object:Gem::Requirement
206
220
  requirements:
207
- - - ~>
221
+ - - "~>"
208
222
  - !ruby/object:Gem::Version
209
- version: '0.9'
223
+ version: 0.9.2
224
+ - !ruby/object:Gem::Dependency
225
+ name: coveralls
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - "~>"
229
+ - !ruby/object:Gem::Version
230
+ version: 0.7.11
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - "~>"
236
+ - !ruby/object:Gem::Version
237
+ version: 0.7.11
210
238
  description: The Google API Ruby Client makes it trivial to discover and access supported
211
239
  APIs.
212
240
  email: sbazyl@google.com
@@ -281,23 +309,23 @@ licenses:
281
309
  metadata: {}
282
310
  post_install_message:
283
311
  rdoc_options:
284
- - --main
312
+ - "--main"
285
313
  - README.md
286
314
  require_paths:
287
315
  - lib
288
316
  required_ruby_version: !ruby/object:Gem::Requirement
289
317
  requirements:
290
- - - ! '>='
318
+ - - ">="
291
319
  - !ruby/object:Gem::Version
292
320
  version: '0'
293
321
  required_rubygems_version: !ruby/object:Gem::Requirement
294
322
  requirements:
295
- - - ! '>='
323
+ - - ">="
296
324
  - !ruby/object:Gem::Version
297
325
  version: 1.3.5
298
326
  requirements: []
299
327
  rubyforge_project:
300
- rubygems_version: 2.2.2
328
+ rubygems_version: 2.4.3
301
329
  signing_key:
302
330
  specification_version: 4
303
331
  summary: The Google API Ruby Client makes it trivial to discover and access Google's