google-api-client 0.5.0 → 0.6.0

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