google-api-client 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
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