google-api-client 0.5.0 → 0.6.0
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.
- data/CHANGELOG.md +14 -0
- data/Gemfile +2 -2
- data/README.md +16 -13
- data/Rakefile +6 -2
- data/bin/google-api +24 -172
- data/lib/compat/multi_json.rb +4 -1
- data/lib/google/api_client.rb +30 -8
- data/lib/google/api_client/auth/installed_app.rb +115 -0
- data/lib/google/api_client/auth/jwt_asserter.rb +48 -50
- data/lib/google/api_client/auth/key_utils.rb +93 -0
- data/lib/google/api_client/auth/pkcs12.rb +4 -11
- data/lib/google/api_client/batch.rb +2 -3
- data/lib/google/api_client/client_secrets.rb +0 -1
- data/lib/google/api_client/discovery/api.rb +15 -1
- data/lib/google/api_client/logging.rb +32 -0
- data/lib/google/api_client/railtie.rb +16 -0
- data/lib/google/api_client/request.rb +36 -28
- data/lib/google/api_client/service_account.rb +1 -0
- data/lib/google/api_client/version.rb +1 -1
- data/spec/fixtures/files/privatekey.p12 +0 -0
- data/spec/fixtures/files/secret.pem +19 -0
- data/spec/google/api_client/batch_spec.rb +1 -1
- data/spec/google/api_client/discovery_spec.rb +20 -3
- data/spec/google/api_client/media_spec.rb +1 -1
- data/spec/google/api_client/result_spec.rb +1 -1
- data/spec/google/api_client/service_account_spec.rb +34 -1
- data/spec/google/api_client_spec.rb +1 -1
- data/tasks/gem.rake +2 -2
- metadata +35 -30
- data/Gemfile.lock +0 -80
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'google/api_client/logging'
|
2
|
+
|
3
|
+
module Google
|
4
|
+
class APIClient
|
5
|
+
|
6
|
+
##
|
7
|
+
# Optional support class for Rails. Currently replaces the built-in logger
|
8
|
+
# with Rails' application log.
|
9
|
+
#
|
10
|
+
class Railtie < Rails::Railtie
|
11
|
+
initializer 'google-api-client' do |app|
|
12
|
+
Google::APIClient.logger = Rails.logger
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -19,6 +19,7 @@ require 'compat/multi_json'
|
|
19
19
|
require 'addressable/uri'
|
20
20
|
require 'stringio'
|
21
21
|
require 'google/api_client/discovery'
|
22
|
+
require 'google/api_client/logging'
|
22
23
|
|
23
24
|
module Google
|
24
25
|
class APIClient
|
@@ -26,8 +27,10 @@ module Google
|
|
26
27
|
##
|
27
28
|
# Represents an API request.
|
28
29
|
class Request
|
29
|
-
|
30
|
+
include Google::APIClient::Logging
|
30
31
|
|
32
|
+
MULTIPART_BOUNDARY = "-----------RubyApiMultipartPost".freeze
|
33
|
+
|
31
34
|
# @return [Hash] Request parameters
|
32
35
|
attr_reader :parameters
|
33
36
|
# @return [Hash] Additional HTTP headers
|
@@ -42,7 +45,7 @@ module Google
|
|
42
45
|
attr_accessor :authenticated
|
43
46
|
# @return [#read, #to_str] Request body
|
44
47
|
attr_accessor :body
|
45
|
-
|
48
|
+
|
46
49
|
##
|
47
50
|
# Build a request
|
48
51
|
#
|
@@ -52,7 +55,7 @@ module Google
|
|
52
55
|
# @option options [Google::APIClient::Method] :api_method
|
53
56
|
# API method to invoke. Either :api_method or :uri must be specified
|
54
57
|
# @option options [TrueClass, FalseClass] :authenticated
|
55
|
-
# True if request should include credentials. Implicitly true if
|
58
|
+
# True if request should include credentials. Implicitly true if
|
56
59
|
# unspecified and :authorization present
|
57
60
|
# @option options [#generate_signed_request] :authorization
|
58
61
|
# OAuth credentials
|
@@ -74,12 +77,12 @@ module Google
|
|
74
77
|
self.api_method = options[:api_method]
|
75
78
|
self.authenticated = options[:authenticated]
|
76
79
|
self.authorization = options[:authorization]
|
77
|
-
|
80
|
+
|
78
81
|
# These parameters are handled differently because they're not
|
79
82
|
# parameters to the API method, but rather to the API system.
|
80
83
|
self.parameters['key'] ||= options[:key] if options[:key]
|
81
84
|
self.parameters['userIp'] ||= options[:user_ip] if options[:user_ip]
|
82
|
-
|
85
|
+
|
83
86
|
if options[:media]
|
84
87
|
self.initialize_media_upload(options)
|
85
88
|
elsif options[:body]
|
@@ -90,13 +93,13 @@ module Google
|
|
90
93
|
else
|
91
94
|
self.body = ''
|
92
95
|
end
|
93
|
-
|
96
|
+
|
94
97
|
unless self.api_method
|
95
98
|
self.http_method = options[:http_method] || 'GET'
|
96
99
|
self.uri = options[:uri]
|
97
100
|
end
|
98
101
|
end
|
99
|
-
|
102
|
+
|
100
103
|
# @!attribute [r] upload_type
|
101
104
|
# @return [String] protocol used for upload
|
102
105
|
def upload_type
|
@@ -128,7 +131,7 @@ module Google
|
|
128
131
|
"Expected Google::APIClient::Method, got #{new_api_method.class}."
|
129
132
|
end
|
130
133
|
end
|
131
|
-
|
134
|
+
|
132
135
|
# @!attribute uri
|
133
136
|
# @return [Addressable::URI] URI to send request
|
134
137
|
def uri
|
@@ -145,26 +148,31 @@ module Google
|
|
145
148
|
#
|
146
149
|
# @api private
|
147
150
|
#
|
148
|
-
# @param [Faraday::Connection] connection
|
151
|
+
# @param [Faraday::Connection] connection
|
149
152
|
# the connection to transmit with
|
150
|
-
#
|
151
|
-
# @return [Google::APIClient::Result]
|
153
|
+
#
|
154
|
+
# @return [Google::APIClient::Result]
|
152
155
|
# result of API request
|
153
156
|
def send(connection)
|
154
|
-
|
157
|
+
env = self.to_env(connection)
|
158
|
+
logger.debug { "#{self.class} Sending API request #{env[:method]} #{env[:url].to_s} #{env[:request_headers]}" }
|
159
|
+
http_response = connection.app.call(env)
|
155
160
|
result = self.process_http_response(http_response)
|
156
|
-
|
161
|
+
|
162
|
+
logger.debug { "#{self.class} Result: #{result.status} #{result.headers}" }
|
163
|
+
|
157
164
|
# Resumamble slightly different than other upload protocols in that it requires at least
|
158
165
|
# 2 requests.
|
159
166
|
if self.upload_type == 'resumable'
|
160
167
|
upload = result.resumable_upload
|
161
168
|
unless upload.complete?
|
169
|
+
logger.debug { "#{self.class} Sending upload body" }
|
162
170
|
result = upload.send(connection)
|
163
171
|
end
|
164
172
|
end
|
165
173
|
return result
|
166
174
|
end
|
167
|
-
|
175
|
+
|
168
176
|
# Convert to an HTTP request. Returns components in order of method, URI,
|
169
177
|
# request headers, and body
|
170
178
|
#
|
@@ -172,7 +180,7 @@ module Google
|
|
172
180
|
#
|
173
181
|
# @return [Array<(Symbol, Addressable::URI, Hash, [#read,#to_str])>]
|
174
182
|
def to_http_request
|
175
|
-
request = (
|
183
|
+
request = (
|
176
184
|
if self.uri
|
177
185
|
unless self.parameters.empty?
|
178
186
|
self.uri.query = Addressable::URI.form_encode(self.parameters)
|
@@ -204,7 +212,7 @@ module Google
|
|
204
212
|
end
|
205
213
|
return options
|
206
214
|
end
|
207
|
-
|
215
|
+
|
208
216
|
##
|
209
217
|
# Prepares the request for execution, building a hash of parts
|
210
218
|
# suitable for sending to Faraday::Connection.
|
@@ -233,7 +241,7 @@ module Google
|
|
233
241
|
|
234
242
|
request_env = http_request.to_env(connection)
|
235
243
|
end
|
236
|
-
|
244
|
+
|
237
245
|
##
|
238
246
|
# Convert HTTP response to an API Result
|
239
247
|
#
|
@@ -247,9 +255,9 @@ module Google
|
|
247
255
|
def process_http_response(response)
|
248
256
|
Result.new(self, response)
|
249
257
|
end
|
250
|
-
|
258
|
+
|
251
259
|
protected
|
252
|
-
|
260
|
+
|
253
261
|
##
|
254
262
|
# Adjust headers & body for media uploads
|
255
263
|
#
|
@@ -269,14 +277,14 @@ module Google
|
|
269
277
|
self.media = options[:media]
|
270
278
|
case self.upload_type
|
271
279
|
when "media"
|
272
|
-
if options[:body] || options[:body_object]
|
280
|
+
if options[:body] || options[:body_object]
|
273
281
|
raise ArgumentError, "Can not specify body & body object for simple uploads"
|
274
282
|
end
|
275
283
|
self.headers['Content-Type'] ||= self.media.content_type
|
276
284
|
self.body = self.media
|
277
285
|
when "multipart"
|
278
|
-
unless options[:body_object]
|
279
|
-
raise ArgumentError, "Multipart requested but no body object"
|
286
|
+
unless options[:body_object]
|
287
|
+
raise ArgumentError, "Multipart requested but no body object"
|
280
288
|
end
|
281
289
|
metadata = StringIO.new(serialize_body(options[:body_object]))
|
282
290
|
build_multipart([Faraday::UploadIO.new(metadata, 'application/json', 'file.json'), self.media])
|
@@ -286,13 +294,13 @@ module Google
|
|
286
294
|
self.headers['X-Upload-Content-Length'] = file_length.to_s
|
287
295
|
if options[:body_object]
|
288
296
|
self.headers['Content-Type'] ||= 'application/json'
|
289
|
-
self.body = serialize_body(options[:body_object])
|
297
|
+
self.body = serialize_body(options[:body_object])
|
290
298
|
else
|
291
299
|
self.body = ''
|
292
300
|
end
|
293
301
|
end
|
294
302
|
end
|
295
|
-
|
303
|
+
|
296
304
|
##
|
297
305
|
# Assemble a multipart message from a set of parts
|
298
306
|
#
|
@@ -304,7 +312,7 @@ module Google
|
|
304
312
|
# MIME type of the message
|
305
313
|
# @param [String] boundary
|
306
314
|
# Boundary for separating each part of the message
|
307
|
-
def build_multipart(parts, mime_type = 'multipart/related', boundary = MULTIPART_BOUNDARY)
|
315
|
+
def build_multipart(parts, mime_type = 'multipart/related', boundary = MULTIPART_BOUNDARY)
|
308
316
|
env = {
|
309
317
|
:request_headers => {'Content-Type' => "#{mime_type};boundary=#{boundary}"},
|
310
318
|
:request => { :boundary => boundary }
|
@@ -313,10 +321,10 @@ module Google
|
|
313
321
|
self.body = multipart.create_multipart(env, parts.map {|part| [nil, part]})
|
314
322
|
self.headers.update(env[:request_headers])
|
315
323
|
end
|
316
|
-
|
324
|
+
|
317
325
|
##
|
318
326
|
# Serialize body object to JSON
|
319
|
-
#
|
327
|
+
#
|
320
328
|
# @api private
|
321
329
|
#
|
322
330
|
# @param [#to_json,#to_hash] body
|
@@ -326,7 +334,7 @@ module Google
|
|
326
334
|
# JSON
|
327
335
|
def serialize_body(body)
|
328
336
|
return body.to_json if body.respond_to?(:to_json)
|
329
|
-
return MultiJson.dump(
|
337
|
+
return MultiJson.dump(body.to_hash) if body.respond_to?(:to_hash)
|
330
338
|
raise TypeError, 'Could not convert body object to JSON.' +
|
331
339
|
'Must respond to :to_json or :to_hash.'
|
332
340
|
end
|
Binary file
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Bag Attributes
|
2
|
+
friendlyName: privatekey
|
3
|
+
localKeyID: 54 69 6D 65 20 31 33 35 31 38 38 38 31 37 38 36 39 36
|
4
|
+
Key Attributes: <No Attributes>
|
5
|
+
-----BEGIN RSA PRIVATE KEY-----
|
6
|
+
MIICXAIBAAKBgQDYDyPb3GhyFx5i/wxS/jFsO6wSLys1ehAk6QZoBXGlg7ETVrIJ
|
7
|
+
HYh9gXQUno4tJiQoaO8wOvleIRrqI0LkiftCXKWVSrzOiV+O9GkKx1byw1yAIZus
|
8
|
+
QdwMT7X0O9hrZLZwhICWC9s6cGhnlCVxLIP/+JkVK7hxEq/LxoSszNV77wIDAQAB
|
9
|
+
AoGAa2G69L7quil7VMBmI6lqbtyJfNAsrXtpIq8eG/z4qsZ076ObAKTI/XeldcoH
|
10
|
+
57CZL+xXVKU64umZMt0rleJuGXdlauEUbsSx+biGewRfGTgC4rUSjmE539rBvmRW
|
11
|
+
gaKliorepPMp/+B9CcG/2YfDPRvG/2cgTXJHVvneo+xHL4ECQQD2Jx5Mvs8z7s2E
|
12
|
+
jY1mkpRKqh4Z7rlitkAwe1NXcVC8hz5ASu7ORyTl8EPpKAfRMYl1ofK/ozT1URXf
|
13
|
+
kL5nChPfAkEA4LPUJ6cqrY4xrrtdGaM4iGIxzen5aZlKz/YNlq5LuQKbnLLHMuXU
|
14
|
+
ohp/ynpqNWbcAFbmtGSMayxGKW5+fJgZ8QJAUBOZv82zCmn9YcnK3juBEmkVMcp/
|
15
|
+
dKVlbGAyVJgAc9RrY+78kQ6D6mmnLgpfwKYk2ae9mKo3aDbgrsIfrtWQcQJAfFGi
|
16
|
+
CEpJp3orbLQG319ZsMM7MOTJdC42oPZOMFbAWFzkAX88DKHx0bn9h+XQizkccSej
|
17
|
+
Ppz+v3DgZJ3YZ1Cz0QJBALiqIokZ+oa3AY6oT0aiec6txrGvNPPbwOsrBpFqGNbu
|
18
|
+
AByzWWBoBi40eKMSIR30LqN9H8YnJ91Aoy1njGYyQaw=
|
19
|
+
-----END RSA PRIVATE KEY-----
|
@@ -17,7 +17,7 @@ require 'google/api_client'
|
|
17
17
|
require 'google/api_client/version'
|
18
18
|
|
19
19
|
describe Google::APIClient::BatchRequest do
|
20
|
-
CLIENT = Google::APIClient.new unless defined?(CLIENT)
|
20
|
+
CLIENT = Google::APIClient.new(:application_name => 'API Client Tests') unless defined?(CLIENT)
|
21
21
|
|
22
22
|
after do
|
23
23
|
# Reset client to not-quite-pristine state
|
@@ -43,7 +43,7 @@ end
|
|
43
43
|
|
44
44
|
describe Google::APIClient do
|
45
45
|
include ConnectionHelpers
|
46
|
-
CLIENT = Google::APIClient.new unless defined?(CLIENT)
|
46
|
+
CLIENT = Google::APIClient.new(:application_name => 'API Client Tests') unless defined?(CLIENT)
|
47
47
|
|
48
48
|
after do
|
49
49
|
# Reset client to not-quite-pristine state
|
@@ -53,7 +53,7 @@ describe Google::APIClient do
|
|
53
53
|
|
54
54
|
it 'should raise a type error for bogus authorization' do
|
55
55
|
(lambda do
|
56
|
-
Google::APIClient.new(:authorization => 42)
|
56
|
+
Google::APIClient.new(:application_name => 'API Client Tests', :authorization => 42)
|
57
57
|
end).should raise_error(TypeError)
|
58
58
|
end
|
59
59
|
|
@@ -214,6 +214,23 @@ describe Google::APIClient do
|
|
214
214
|
conn.verify
|
215
215
|
end
|
216
216
|
|
217
|
+
it 'should generate valid requests when parameter value includes semicolon' do
|
218
|
+
conn = stub_connection do |stub|
|
219
|
+
# semicolon (;) in parameter value was being converted to
|
220
|
+
# bare ampersand (&) in 0.4.7. ensure that it gets converted
|
221
|
+
# to a CGI-escaped semicolon (%3B) instead.
|
222
|
+
stub.post('/prediction/v1.2/training?data=12345%3B67890') do |env|
|
223
|
+
env[:body].should == ''
|
224
|
+
end
|
225
|
+
end
|
226
|
+
request = CLIENT.execute(
|
227
|
+
:api_method => @prediction.training.insert,
|
228
|
+
:parameters => {'data' => '12345;67890'},
|
229
|
+
:connection => conn
|
230
|
+
)
|
231
|
+
conn.verify
|
232
|
+
end
|
233
|
+
|
217
234
|
it 'should generate valid requests when repeated parameters are passed' do
|
218
235
|
pending("This is caused by Faraday's encoding of query parameters.")
|
219
236
|
conn = stub_connection do |stub|
|
@@ -258,7 +275,7 @@ describe Google::APIClient do
|
|
258
275
|
it 'should allow modification to the base URIs for testing purposes' do
|
259
276
|
# Using a new client instance here to avoid caching rebased discovery doc
|
260
277
|
prediction_rebase =
|
261
|
-
Google::APIClient.new.discovered_api('prediction', 'v1.2')
|
278
|
+
Google::APIClient.new(:application_name => 'API Client Tests').discovered_api('prediction', 'v1.2')
|
262
279
|
prediction_rebase.method_base =
|
263
280
|
'https://testing-domain.example.com/prediction/v1.2/'
|
264
281
|
|
@@ -58,7 +58,7 @@ describe Google::APIClient::UploadIO do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
describe Google::APIClient::ResumableUpload do
|
61
|
-
CLIENT
|
61
|
+
CLIENT = Google::APIClient.new(:application_name => 'API Client Tests') unless defined?(CLIENT)
|
62
62
|
|
63
63
|
after do
|
64
64
|
# Reset client to not-quite-pristine state
|
@@ -18,7 +18,7 @@ require 'google/api_client'
|
|
18
18
|
require 'google/api_client/version'
|
19
19
|
|
20
20
|
describe Google::APIClient::Result do
|
21
|
-
CLIENT
|
21
|
+
CLIENT = Google::APIClient.new(:application_name => 'API Client Tests') unless defined?(CLIENT)
|
22
22
|
|
23
23
|
describe 'with the plus API' do
|
24
24
|
before do
|
@@ -16,6 +16,39 @@ require 'spec_helper'
|
|
16
16
|
|
17
17
|
require 'google/api_client'
|
18
18
|
|
19
|
+
fixtures_path = File.expand_path('../../../fixtures', __FILE__)
|
20
|
+
|
21
|
+
describe Google::APIClient::KeyUtils do
|
22
|
+
it 'should read PKCS12 files from the filesystem' do
|
23
|
+
pending "Reading from PKCS12 not supported on jruby" if RUBY_PLATFORM == 'java'
|
24
|
+
path = File.expand_path('files/privatekey.p12', fixtures_path)
|
25
|
+
key = Google::APIClient::KeyUtils.load_from_pkcs12(path, 'notasecret')
|
26
|
+
key.should_not == nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should read PKCS12 files from loaded files' do
|
30
|
+
pending "Reading from PKCS12 not supported on jruby" if RUBY_PLATFORM == 'java'
|
31
|
+
path = File.expand_path('files/privatekey.p12', fixtures_path)
|
32
|
+
content = File.read(path)
|
33
|
+
key = Google::APIClient::KeyUtils.load_from_pkcs12(content, 'notasecret')
|
34
|
+
key.should_not == nil
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should read PEM files from the filesystem' do
|
38
|
+
path = File.expand_path('files/secret.pem', fixtures_path)
|
39
|
+
key = Google::APIClient::KeyUtils.load_from_pem(path, 'notasecret')
|
40
|
+
key.should_not == nil
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should read PEM files from loaded files' do
|
44
|
+
path = File.expand_path('files/secret.pem', fixtures_path)
|
45
|
+
content = File.read(path)
|
46
|
+
key = Google::APIClient::KeyUtils.load_from_pem(content, 'notasecret')
|
47
|
+
key.should_not == nil
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
19
52
|
describe Google::APIClient::JWTAsserter do
|
20
53
|
include ConnectionHelpers
|
21
54
|
|
@@ -25,7 +58,7 @@ describe Google::APIClient::JWTAsserter do
|
|
25
58
|
|
26
59
|
it 'should generate valid JWTs' do
|
27
60
|
asserter = Google::APIClient::JWTAsserter.new('client1', 'scope1 scope2', @key)
|
28
|
-
jwt = asserter.to_jwt
|
61
|
+
jwt = asserter.to_authorization.to_jwt
|
29
62
|
jwt.should_not == nil
|
30
63
|
|
31
64
|
claim = JWT.decode(jwt, @key.public_key, true)
|
@@ -59,7 +59,7 @@ end
|
|
59
59
|
describe Google::APIClient do
|
60
60
|
include ConnectionHelpers
|
61
61
|
|
62
|
-
let(:client) { Google::APIClient.new }
|
62
|
+
let(:client) { Google::APIClient.new(:application_name => 'API Client Tests') }
|
63
63
|
|
64
64
|
it 'should make its version number available' do
|
65
65
|
Google::APIClient::VERSION::STRING.should be_instance_of(String)
|
data/tasks/gem.rake
CHANGED
@@ -24,11 +24,11 @@ namespace :gem do
|
|
24
24
|
s.rdoc_options.concat ['--main', 'README.md']
|
25
25
|
|
26
26
|
# Dependencies used in the main library
|
27
|
-
s.add_runtime_dependency('signet', '>= 0.4.
|
27
|
+
s.add_runtime_dependency('signet', '>= 0.4.4')
|
28
28
|
s.add_runtime_dependency('addressable', '>= 2.3.2')
|
29
29
|
s.add_runtime_dependency('uuidtools', '>= 2.1.0')
|
30
30
|
s.add_runtime_dependency('autoparse', '>= 0.3.2')
|
31
|
-
s.add_runtime_dependency('faraday', '~> 0.8.
|
31
|
+
s.add_runtime_dependency('faraday', '~> 0.8.4')
|
32
32
|
s.add_runtime_dependency('multi_json', '>= 1.0.0')
|
33
33
|
s.add_runtime_dependency('extlib', '>= 0.9.15')
|
34
34
|
s.add_runtime_dependency('jwt', '>= 0.1.5')
|
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.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2013-01-05 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: signet
|
17
|
-
requirement: &
|
17
|
+
requirement: &70149072361020 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.4.
|
22
|
+
version: 0.4.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70149072361020
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: addressable
|
28
|
-
requirement: &
|
28
|
+
requirement: &70149072360300 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 2.3.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70149072360300
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: uuidtools
|
39
|
-
requirement: &
|
39
|
+
requirement: &70149072359760 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 2.1.0
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70149072359760
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: autoparse
|
50
|
-
requirement: &
|
50
|
+
requirement: &70149072359200 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,21 +55,21 @@ dependencies:
|
|
55
55
|
version: 0.3.2
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70149072359200
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: faraday
|
61
|
-
requirement: &
|
61
|
+
requirement: &70149072358480 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.8.
|
66
|
+
version: 0.8.4
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70149072358480
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: multi_json
|
72
|
-
requirement: &
|
72
|
+
requirement: &70149072357900 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 1.0.0
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70149072357900
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: extlib
|
83
|
-
requirement: &
|
83
|
+
requirement: &70149072357260 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 0.9.15
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70149072357260
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: jwt
|
94
|
-
requirement: &
|
94
|
+
requirement: &70149072356600 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: 0.1.5
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *70149072356600
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: launchy
|
105
|
-
requirement: &
|
105
|
+
requirement: &70149072356100 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ! '>='
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: 2.1.1
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *70149072356100
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: rake
|
116
|
-
requirement: &
|
116
|
+
requirement: &70149072355480 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ! '>='
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: 0.9.0
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *70149072355480
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rspec
|
127
|
-
requirement: &
|
127
|
+
requirement: &70149072354900 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ! '>='
|
@@ -132,7 +132,7 @@ dependencies:
|
|
132
132
|
version: 2.11.0
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *70149072354900
|
136
136
|
description: ! 'The Google API Ruby Client makes it trivial to discover and access
|
137
137
|
supported
|
138
138
|
|
@@ -147,27 +147,33 @@ extra_rdoc_files:
|
|
147
147
|
- README.md
|
148
148
|
files:
|
149
149
|
- lib/compat/multi_json.rb
|
150
|
+
- lib/google/api_client.rb
|
151
|
+
- lib/google/api_client/auth/installed_app.rb
|
150
152
|
- lib/google/api_client/auth/jwt_asserter.rb
|
153
|
+
- lib/google/api_client/auth/key_utils.rb
|
151
154
|
- lib/google/api_client/auth/pkcs12.rb
|
152
155
|
- lib/google/api_client/batch.rb
|
153
156
|
- lib/google/api_client/client_secrets.rb
|
157
|
+
- lib/google/api_client/discovery.rb
|
154
158
|
- lib/google/api_client/discovery/api.rb
|
155
159
|
- lib/google/api_client/discovery/media.rb
|
156
160
|
- lib/google/api_client/discovery/method.rb
|
157
161
|
- lib/google/api_client/discovery/resource.rb
|
158
162
|
- lib/google/api_client/discovery/schema.rb
|
159
|
-
- lib/google/api_client/discovery.rb
|
160
163
|
- lib/google/api_client/environment.rb
|
161
164
|
- lib/google/api_client/errors.rb
|
165
|
+
- lib/google/api_client/logging.rb
|
162
166
|
- lib/google/api_client/media.rb
|
167
|
+
- lib/google/api_client/railtie.rb
|
163
168
|
- lib/google/api_client/reference.rb
|
164
169
|
- lib/google/api_client/request.rb
|
165
170
|
- lib/google/api_client/result.rb
|
166
171
|
- lib/google/api_client/service_account.rb
|
167
172
|
- lib/google/api_client/version.rb
|
168
|
-
- lib/google/api_client.rb
|
169
173
|
- lib/google/inflection.rb
|
174
|
+
- spec/fixtures/files/privatekey.p12
|
170
175
|
- spec/fixtures/files/sample.txt
|
176
|
+
- spec/fixtures/files/secret.pem
|
171
177
|
- spec/google/api_client/batch_spec.rb
|
172
178
|
- spec/google/api_client/discovery_spec.rb
|
173
179
|
- spec/google/api_client/media_spec.rb
|
@@ -183,10 +189,9 @@ files:
|
|
183
189
|
- tasks/yard.rake
|
184
190
|
- CHANGELOG.md
|
185
191
|
- Gemfile
|
186
|
-
- Gemfile.lock
|
187
192
|
- LICENSE
|
188
|
-
- Rakefile
|
189
193
|
- README.md
|
194
|
+
- Rakefile
|
190
195
|
- bin/google-api
|
191
196
|
homepage: http://code.google.com/p/google-api-ruby-client/
|
192
197
|
licenses: []
|