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.
@@ -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
- MULTIPART_BOUNDARY = "-----------RubyApiMultipartPost".freeze
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
- http_response = connection.app.call(self.to_env(connection))
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(options[:body_object].to_hash) if body.respond_to?(:to_hash)
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
@@ -14,3 +14,4 @@
14
14
 
15
15
  require 'google/api_client/auth/pkcs12'
16
16
  require 'google/api_client/auth/jwt_asserter'
17
+ require 'google/api_client/auth/key_utils'
@@ -21,7 +21,7 @@ if !defined?(::Google::APIClient::VERSION)
21
21
  class APIClient
22
22
  module VERSION
23
23
  MAJOR = 0
24
- MINOR = 5
24
+ MINOR = 6
25
25
  TINY = 0
26
26
  STRING = [MAJOR, MINOR, TINY].join('.')
27
27
  end
@@ -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 ||= Google::APIClient.new
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 ||= Google::APIClient.new
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)
@@ -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.1')
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.1')
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.5.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: 2012-10-30 00:00:00.000000000Z
13
+ date: 2013-01-05 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: signet
17
- requirement: &70253195775940 !ruby/object:Gem::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.1
22
+ version: 0.4.4
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70253195775940
25
+ version_requirements: *70149072361020
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: addressable
28
- requirement: &70253195774000 !ruby/object:Gem::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: *70253195774000
36
+ version_requirements: *70149072360300
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: uuidtools
39
- requirement: &70253195765900 !ruby/object:Gem::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: *70253195765900
47
+ version_requirements: *70149072359760
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: autoparse
50
- requirement: &70253195764740 !ruby/object:Gem::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: *70253195764740
58
+ version_requirements: *70149072359200
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: faraday
61
- requirement: &70253195763760 !ruby/object:Gem::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.1
66
+ version: 0.8.4
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *70253195763760
69
+ version_requirements: *70149072358480
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: multi_json
72
- requirement: &70253195762140 !ruby/object:Gem::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: *70253195762140
80
+ version_requirements: *70149072357900
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: extlib
83
- requirement: &70253195760160 !ruby/object:Gem::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: *70253195760160
91
+ version_requirements: *70149072357260
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: jwt
94
- requirement: &70253195750640 !ruby/object:Gem::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: *70253195750640
102
+ version_requirements: *70149072356600
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: launchy
105
- requirement: &70253195745420 !ruby/object:Gem::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: *70253195745420
113
+ version_requirements: *70149072356100
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rake
116
- requirement: &70253195733560 !ruby/object:Gem::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: *70253195733560
124
+ version_requirements: *70149072355480
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
- requirement: &70253195725940 !ruby/object:Gem::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: *70253195725940
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: []