active_rest_client 1.0.7 → 1.0.8

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9e90aa3aab74da133bb45147624a0723812c609e
4
- data.tar.gz: fe25689f084ddcaa682c7230152e2c1a49fa03db
3
+ metadata.gz: 323d3696fb921ff5d23de556ec82ca0ee07fadea
4
+ data.tar.gz: 852a377147513500e2a0d1fdc92bbdf38d30c76d
5
5
  SHA512:
6
- metadata.gz: a5376c72339436353eb5e46ef657c479bda1adb14bd446e7bc731aae88ace39c6a42a64a449de3cb49f3f123c3f2b1ef85a0e214ff01c4f838bc5fd07f1e7e0c
7
- data.tar.gz: dbf38d4b667137b07724da1d3fb0d365f7cb415df6b7aafd28cbcb4c1b74d5e225077a221110342de9bded154501708022883f35e35d9bf5de90340d00db1729
6
+ metadata.gz: 911ece68f67242d67f06e279f13398624ed35a0828dd92e2f960b8ceb9ed1663b6790f8f25899e2b9224ff7fb2182fe7faf4d68eb4b64cc7451a1075de655afb
7
+ data.tar.gz: f62c9f442fe875811da762bcb6b87a3a7d52ccd3cd161b8926a1397b201f0fdf0112eade77ae1b6bcd8d8fca8bb5b570b05fc5e2554a87dc155798ffc4ea0398
data/README.md CHANGED
@@ -146,7 +146,7 @@ There are two types of association. One assumes when you call a method you actu
146
146
 
147
147
  #### Association Type 1 - Loading Other Classes
148
148
 
149
- If the call would return a list of instances that should be considered another object, you can also specify this when mapping the method using the `:has_many` option. It doesn't call anything on that object except for instantiate it, but it does let you have objects of a different class to the one you initially called.
149
+ If the call would return a single instance or a list of instances that should be considered another object, you can also specify this when mapping the method using the `:has_one` or `:has_many` options respectively. It doesn't call anything on that object except for instantiate it, but it does let you have objects of a different class to the one you initially called.
150
150
 
151
151
  ```ruby
152
152
  class Expense < ActiveRestClient::Base
@@ -155,12 +155,19 @@ class Expense < ActiveRestClient::Base
155
155
  end
156
156
  end
157
157
 
158
+ class Address < ActiveRestClient::Base
159
+ def full_string
160
+ return "#{self.street}, #{self.city}, #{self.region}, #{self.country}"
161
+ end
162
+ end
163
+
158
164
  class Person < ActiveRestClient::Base
159
- get :find, "/people/:id", :has_many => {:expenses => Expense}
165
+ get :find, "/people/:id", :has_many => {:expenses => Expense}, :has_one => {:address => Address}
160
166
  end
161
167
 
162
168
  @person = Person.find(1)
163
169
  puts @person.expenses.reduce {|e| e.inc_vat}
170
+ puts @person.address.full_string
164
171
  ```
165
172
 
166
173
  #### Association Type 2 - Lazy Loading From Other URLs
@@ -345,6 +352,8 @@ class Person < ActiveRestClient::Base
345
352
 
346
353
  before_request :replace_body
347
354
 
355
+ before_request :override_default_content_type
356
+
348
357
  private
349
358
 
350
359
  def replace_token_in_url(name, request)
@@ -360,6 +369,12 @@ class Person < ActiveRestClient::Base
360
369
  request.body = request.post_params.to_json
361
370
  end
362
371
  end
372
+
373
+ def override_default_content_type(name, request)
374
+ if name == :save
375
+ request.headers["Content-Type"] = "application/json"
376
+ end
377
+ end
363
378
  end
364
379
  ```
365
380
 
@@ -424,6 +439,8 @@ This will return an array of the named method for each object or the response fr
424
439
 
425
440
  ### Authentication
426
441
 
442
+ #### Basic
443
+
427
444
  You can authenticate with Basic authentication by putting the username and password in to the `base_url` or by setting them within the specific model:
428
445
 
429
446
  ```ruby
@@ -435,6 +452,20 @@ class Person < ActiveRestClient::Base
435
452
  end
436
453
  ```
437
454
 
455
+ #### Api-Auth
456
+
457
+ Using the [Api-Auth](https://github.com/mgomes/api_auth) integration it is very easy to sign requests. Include the Api-Auth gem in your Gemfile and in then add it to your application. Then simply configure Api-Auth one time in your app and all requests will be signed from then on.
458
+
459
+ ```ruby
460
+ require 'api-auth'
461
+
462
+ @access_id = '123456'
463
+ @secret_key = 'abcdef'
464
+ ActiveRestClient::Base.api_auth_credentials(@access_id, @secret_key)
465
+ ```
466
+
467
+ For more information on how to generate an access id and secret key please read the [Api-Auth](https://github.com/mgomes/api_auth) documentation.
468
+
438
469
  ### Body Types
439
470
 
440
471
  By default ActiveRestClient puts the body in to normal CGI parameters in K=V&K2=V2 format. However, if you want to use JSON for your PUT/POST requests, you can use either (the other option, the default, is `:form_encoded`):
@@ -452,7 +483,7 @@ or
452
483
  ActiveRestClient::Base.request_body_type = :json
453
484
  ```
454
485
 
455
- This will also set the header `Content-Type` to `application/x-www-form-urlencoded` by default or `application/json` when `:json`.
486
+ This will also set the header `Content-Type` to `application/x-www-form-urlencoded` by default or `application/json; charset=utf-8` when `:json`. You can override this using the filter `before_request`.
456
487
 
457
488
  If you have an API that is inconsistent in its body type requirements, you can also specify it on the individual method mapping:
458
489
 
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "guard-rspec"
30
30
  spec.add_development_dependency 'terminal-notifier-guard'
31
31
  spec.add_development_dependency 'coveralls'
32
+ spec.add_development_dependency "api-auth", ">= 1.3.1"
32
33
 
33
34
  spec.add_runtime_dependency "multi_json"
34
35
  spec.add_runtime_dependency "activesupport"
@@ -181,4 +181,5 @@ module ActiveRestClient
181
181
 
182
182
  class NoAttributeException < StandardError ; end
183
183
  class ValidationFailedException < StandardError ; end
184
+ class MissingOptionalLibraryError < StandardError ; end
184
185
  end
@@ -6,6 +6,8 @@ module ActiveRestClient
6
6
  @@password = nil
7
7
  @@request_body_type = :form_encoded
8
8
  @lazy_load = false
9
+ @@api_auth_access_id = nil
10
+ @@api_auth_secret_key = nil
9
11
 
10
12
  def base_url(value = nil)
11
13
  if value.nil?
@@ -106,6 +108,29 @@ module ActiveRestClient
106
108
  value ? @whiny_missing = value : @whiny_missing || false
107
109
  end
108
110
 
111
+ def api_auth_credentials(access_id, secret_key)
112
+ begin
113
+ require 'api-auth'
114
+ rescue LoadError
115
+ raise MissingOptionalLibraryError.new("You must include the gem 'api-auth' in your Gemfile to set api-auth credentials.")
116
+ end
117
+
118
+ @@api_auth_access_id = access_id
119
+ @@api_auth_secret_key = secret_key
120
+ end
121
+
122
+ def using_api_auth?
123
+ !@@api_auth_access_id.nil? && !@@api_auth_secret_key.nil?
124
+ end
125
+
126
+ def api_auth_access_id
127
+ @@api_auth_access_id
128
+ end
129
+
130
+ def api_auth_secret_key
131
+ @@api_auth_secret_key
132
+ end
133
+
109
134
  def verbose!
110
135
  @verbose = true
111
136
  end
@@ -124,14 +149,16 @@ module ActiveRestClient
124
149
  end
125
150
 
126
151
  def _reset_configuration!
127
- @base_url = nil
128
- @@base_url = nil
129
- @request_body_type = nil
130
- @@request_body_type = :form_encoded
131
- @whiny_missing = nil
132
- @lazy_load = false
133
- @faraday_config = default_faraday_config
134
- @adapter = :patron
152
+ @base_url = nil
153
+ @@base_url = nil
154
+ @request_body_type = nil
155
+ @@request_body_type = :form_encoded
156
+ @whiny_missing = nil
157
+ @lazy_load = false
158
+ @faraday_config = default_faraday_config
159
+ @adapter = :patron
160
+ @@api_auth_access_id = nil
161
+ @@api_auth_secret_key = nil
135
162
  end
136
163
 
137
164
  private
@@ -38,6 +38,7 @@ module ActiveRestClient
38
38
  make_safe_request(path) do
39
39
  @session.get(path) do |req|
40
40
  req.headers = req.headers.merge(headers)
41
+ sign_request(req)
41
42
  end
42
43
  end
43
44
  end
@@ -47,6 +48,7 @@ module ActiveRestClient
47
48
  @session.put(path) do |req|
48
49
  req.headers = req.headers.merge(headers)
49
50
  req.body = data
51
+ sign_request(req)
50
52
  end
51
53
  end
52
54
  end
@@ -56,6 +58,7 @@ module ActiveRestClient
56
58
  @session.post(path) do |req|
57
59
  req.headers = req.headers.merge(headers)
58
60
  req.body = data
61
+ sign_request(req)
59
62
  end
60
63
  end
61
64
  end
@@ -64,6 +67,7 @@ module ActiveRestClient
64
67
  make_safe_request(path) do
65
68
  @session.delete(path) do |req|
66
69
  req.headers = req.headers.merge(headers)
70
+ sign_request(req)
67
71
  end
68
72
  end
69
73
  end
@@ -74,9 +78,16 @@ module ActiveRestClient
74
78
  Faraday.new({url: @base_url}, &ActiveRestClient::Base.faraday_config)
75
79
  end
76
80
 
77
-
78
81
  def full_url(path)
79
82
  @session.build_url(path).to_s
80
83
  end
84
+
85
+ def sign_request(request)
86
+ return if !ActiveRestClient::Base.using_api_auth?
87
+ ApiAuth.sign!(
88
+ request,
89
+ ActiveRestClient::Base.api_auth_access_id,
90
+ ActiveRestClient::Base.api_auth_secret_key)
91
+ end
81
92
  end
82
93
  end
@@ -21,7 +21,7 @@ module ActiveRestClient
21
21
  Rails.logger.debug(message)
22
22
  elsif @logfile
23
23
  File.open(@logfile, "a") do |f|
24
- f << message
24
+ f << "#{message}\n"
25
25
  end
26
26
  else
27
27
  @messages << message
@@ -33,7 +33,7 @@ module ActiveRestClient
33
33
  Rails.logger.info(message)
34
34
  elsif @logfile
35
35
  File.open(@logfile, "a") do |f|
36
- f << message
36
+ f << "#{message}\n"
37
37
  end
38
38
  else
39
39
  @messages << message
@@ -45,7 +45,7 @@ module ActiveRestClient
45
45
  Rails.logger.warn(message)
46
46
  elsif @logfile
47
47
  File.open(@logfile, "a") do |f|
48
- f << message
48
+ f << "#{message}\n"
49
49
  end
50
50
  else
51
51
  @messages << message
@@ -57,7 +57,7 @@ module ActiveRestClient
57
57
  Rails.logger.error(message)
58
58
  elsif @logfile
59
59
  File.open(@logfile, "a") do |f|
60
- f << message
60
+ f << "#{message}\n"
61
61
  end
62
62
  else
63
63
  @messages << message
@@ -7,13 +7,14 @@ module ActiveRestClient
7
7
  attr_accessor :post_params, :get_params, :url, :path, :headers, :method, :object, :body, :forced_url, :original_url
8
8
 
9
9
  def initialize(method, object, params = {})
10
- @method = method
11
- @method[:options] ||= {}
12
- @method[:options][:lazy] ||= []
13
- @overriden_name = @method[:options][:overriden_name]
14
- @object = object
15
- @params = params
16
- @headers = HeadersList.new
10
+ @method = method
11
+ @method[:options] ||= {}
12
+ @method[:options][:lazy] ||= []
13
+ @method[:options][:has_one] ||= {}
14
+ @overriden_name = @method[:options][:overriden_name]
15
+ @object = object
16
+ @params = params
17
+ @headers = HeadersList.new
17
18
  end
18
19
 
19
20
  def object_is_class?
@@ -201,18 +202,17 @@ module ActiveRestClient
201
202
 
202
203
  def append_get_parameters
203
204
  if @get_params.any?
204
- params = @get_params.map {|k,v| "#{k}=#{CGI.escape(v.to_s)}"}
205
- @url += "?" + params.sort * "&"
205
+ @url += "?" + @get_params.to_query
206
206
  end
207
207
  end
208
208
 
209
209
  def prepare_request_body(params = nil)
210
210
  if request_body_type == :form_encoded
211
- @body ||= (params || @post_params || {}).map {|k,v| "#{k}=#{CGI.escape(v.to_s)}"}.sort * "&"
211
+ @body ||= (params || @post_params || {}).to_query
212
212
  headers["Content-Type"] ||= "application/x-www-form-urlencoded"
213
213
  elsif request_body_type == :json
214
214
  @body ||= (params || @post_params || {}).to_json
215
- headers["Content-Type"] ||= "application/json"
215
+ headers["Content-Type"] ||= "application/json; charset=utf-8"
216
216
  end
217
217
  end
218
218
 
@@ -355,6 +355,9 @@ module ActiveRestClient
355
355
  if @method[:options][:has_many][name]
356
356
  overriden_name = name
357
357
  object = @method[:options][:has_many][name].new
358
+ elsif @method[:options][:has_one][name]
359
+ overriden_name = name
360
+ object = @method[:options][:has_one][name].new
358
361
  else
359
362
  if object_is_class?
360
363
  object = @object.new
@@ -369,15 +372,16 @@ module ActiveRestClient
369
372
 
370
373
  attributes.each do |k,v|
371
374
  k = k.to_sym
375
+ overriden_name = select_name(k, overriden_name)
372
376
  if @method[:options][:lazy].include?(k)
373
- object._attributes[k] = ActiveRestClient::LazyAssociationLoader.new(overriden_name || k, v, self, overriden_name:(overriden_name||k))
377
+ object._attributes[k] = ActiveRestClient::LazyAssociationLoader.new(overriden_name, v, self, overriden_name:(overriden_name))
374
378
  elsif v.is_a? Hash
375
- object._attributes[k] = new_object(v, overriden_name || k)
379
+ object._attributes[k] = new_object(v, overriden_name )
376
380
  elsif v.is_a? Array
377
381
  object._attributes[k] = ActiveRestClient::ResultIterator.new
378
382
  v.each do |item|
379
383
  if item.is_a? Hash
380
- object._attributes[k] << new_object(item, overriden_name || k)
384
+ object._attributes[k] << new_object(item, overriden_name)
381
385
  else
382
386
  object._attributes[k] << item
383
387
  end
@@ -444,6 +448,14 @@ module ActiveRestClient
444
448
 
445
449
  private
446
450
 
451
+ def select_name(name, parent_name)
452
+ if @method[:options][:has_many][name] || @method[:options][:has_one][name]
453
+ return name
454
+ end
455
+
456
+ parent_name || name
457
+ end
458
+
447
459
  def is_json_response?
448
460
  @response.headers['Content-Type'].nil? || @response.headers['Content-Type'].include?('json')
449
461
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveRestClient
2
- VERSION = "1.0.7"
2
+ VERSION = "1.0.8"
3
3
  end
@@ -108,6 +108,32 @@ describe ActiveRestClient::Configuration do
108
108
  expect(LazyLoadingConfigurationExample2.lazy_load?).to be_truthy
109
109
  end
110
110
 
111
+ describe 'api auth' do
112
+ context 'default' do
113
+ it "should be false using_api_auth?" do
114
+ expect(ActiveRestClient::Base.using_api_auth?).to be_falsey
115
+ end
116
+ end
117
+
118
+ context 'setting api auth credentials' do
119
+ before(:each) do
120
+ ConfigurationExample.api_auth_credentials('id123', 'secret123')
121
+ end
122
+
123
+ it "should remember setting using_api_auth?" do
124
+ expect(ConfigurationExample.using_api_auth?).to be_truthy
125
+ end
126
+
127
+ it "should remember setting api_auth_access_id" do
128
+ expect(ConfigurationExample.api_auth_access_id).to eq('id123')
129
+ end
130
+
131
+ it "should remember setting api_auth_secret_key" do
132
+ expect(ConfigurationExample.api_auth_secret_key).to eq('secret123')
133
+ end
134
+ end
135
+ end
136
+
111
137
  it "should default to non-verbose loggingg" do
112
138
  class VerboseConfigurationExample1
113
139
  include ActiveRestClient::Configuration
@@ -98,6 +98,37 @@ describe ActiveRestClient::Connection do
98
98
  end
99
99
  end
100
100
 
101
+ context 'with api auth signing requests' do
102
+ before(:each) do
103
+ ActiveRestClient::Base.api_auth_credentials('id123', 'secret123')
104
+
105
+ @default_headers = {'Date' => 'Sat, 14 Mar 2015 15:13:24 GMT'}
106
+
107
+ ActiveRestClient::Base.faraday_config do |faraday|
108
+ faraday.adapter ActiveRestClient::Base.adapter
109
+ faraday.headers.update(@default_headers)
110
+ end
111
+ @connection.reconnect
112
+ end
113
+
114
+ it 'should have an Authorization header' do
115
+ stub_request(:get, "www.example.com/foo")
116
+ .with(:headers => @default_headers)
117
+ .to_return(body: "{result:true}")
118
+ result = @connection.get("/foo")
119
+ expect(result.env.request_headers['Authorization']).to eq("APIAuth id123:PMWBThkB8vKbvUccHvoqu9G3eVk=")
120
+ end
121
+
122
+ it 'should have an Content-MD5 header' do
123
+ stub_request(:put, "www.example.com/foo").
124
+ with(body: "body", :headers => @default_headers).
125
+ to_return(body: "{result:true}")
126
+
127
+ result = @connection.put("/foo", "body")
128
+ expect(result.env.request_headers['Content-MD5']).to eq("hBotaJrYa9FhFEdFPCLG/A==")
129
+ end
130
+ end
131
+
101
132
  it "should retry once in the event of a connection failed" do
102
133
  stub_request(:get, "www.example.com/foo").to_raise(Faraday::Error::ConnectionFailed.new("Foo"))
103
134
  expect { @connection.get("/foo") }.to raise_error(ActiveRestClient::ConnectionFailedException)
@@ -28,22 +28,22 @@ describe ActiveRestClient::Instrumentation do
28
28
  ActiveRestClient::Logger.logfile = "/dev/null"
29
29
  file = double('file')
30
30
  expect(File).to receive(:open).with("/dev/null", "a").and_yield(file)
31
- expect(file).to receive(:<<).with("Hello world")
31
+ expect(file).to receive(:<<).with("Hello world\n")
32
32
  ActiveRestClient::Logger.debug("Hello world")
33
33
 
34
34
  file = double('file')
35
35
  expect(File).to receive(:open).with("/dev/null", "a").and_yield(file)
36
- expect(file).to receive(:<<).with("Hello info")
36
+ expect(file).to receive(:<<).with("Hello info\n")
37
37
  ActiveRestClient::Logger.info("Hello info")
38
38
 
39
39
  file = double('file')
40
40
  expect(File).to receive(:open).with("/dev/null", "a").and_yield(file)
41
- expect(file).to receive(:<<).with("Hello error")
41
+ expect(file).to receive(:<<).with("Hello error\n")
42
42
  ActiveRestClient::Logger.error("Hello error")
43
43
 
44
44
  file = double('file')
45
45
  expect(File).to receive(:open).with("/dev/null", "a").and_yield(file)
46
- expect(file).to receive(:<<).with("Hello warn")
46
+ expect(file).to receive(:<<).with("Hello warn\n")
47
47
  ActiveRestClient::Logger.warn("Hello warn")
48
48
  end
49
49
 
@@ -3,6 +3,7 @@ require 'spec_helper'
3
3
  describe ActiveRestClient::Request do
4
4
  before :each do
5
5
  class ExampleOtherClient < ActiveRestClient::Base ; end
6
+ class ExampleSingleClient < ActiveRestClient::Base ; end
6
7
  class ExampleClient < ActiveRestClient::Base
7
8
  base_url "http://www.example.com"
8
9
  request_body_type :form_encoded
@@ -21,6 +22,7 @@ describe ActiveRestClient::Request do
21
22
 
22
23
  get :all, "/", :has_many => {:expenses => ExampleOtherClient}
23
24
  get :babies, "/babies", :has_many => {:children => ExampleOtherClient}
25
+ get :single_association, "/single", :has_one => {:single => ExampleSingleClient}, :has_many => {:children => ExampleOtherClient}
24
26
  get :headers, "/headers"
25
27
  put :headers_default, "/headers_default"
26
28
  put :headers_json, "/headers_json", request_body_type: :json
@@ -135,6 +137,11 @@ describe ActiveRestClient::Request do
135
137
  ExampleClient.update id:1234, debug:true
136
138
  end
137
139
 
140
+ it "should pass through 'array type' get parameters" do
141
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/?include%5B%5D=your&include%5B%5D=friends", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
142
+ ExampleClient.all :include => [:your,:friends]
143
+ end
144
+
138
145
  it "should encode the body in a form-encoded format by default" do
139
146
  expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true&test=foo", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
140
147
  ExampleClient.update id:1234, debug:true, test:'foo'
@@ -163,7 +170,7 @@ describe ActiveRestClient::Request do
163
170
  end
164
171
 
165
172
  it "should set request header with content-type for JSON" do
166
- expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/headers_json", "{}", hash_including("Content-Type" => "application/json")).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
173
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/headers_json", "{}", hash_including("Content-Type" => "application/json; charset=utf-8")).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
167
174
  ExampleClient.headers_json
168
175
  end
169
176
 
@@ -236,6 +243,18 @@ describe ActiveRestClient::Request do
236
243
  expect(object.children.eldest.first).to be_instance_of(ExampleOtherClient)
237
244
  end
238
245
 
246
+ it "should instantiate other classes using has_one when required to do so" do
247
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/single", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"single\":{\"name\":\"Billy\"}}", status:200, headers:{}))
248
+ object = ExampleClient.single_association
249
+ expect(object.single).to be_instance_of(ExampleSingleClient)
250
+ end
251
+
252
+ it "should instantiate other classes using has_one even if nested off the root" do
253
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/single", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"children\":[{\"single\":{\"name\":\"Billy\"}}, {\"single\":{\"name\":\"Sharon\"}}]}", status:200, headers:{}))
254
+ object = ExampleClient.single_association
255
+ expect(object.children.first.single).to be_instance_of(ExampleSingleClient)
256
+ end
257
+
239
258
  it "should assign new attributes to the existing object if possible" do
240
259
  expect_any_instance_of(ActiveRestClient::Connection).
241
260
  to receive(:post).
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_rest_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Which Ltd
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-04 00:00:00.000000000 Z
12
+ date: 2015-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -151,6 +151,20 @@ dependencies:
151
151
  - - ">="
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: api-auth
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: 1.3.1
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: 1.3.1
154
168
  - !ruby/object:Gem::Dependency
155
169
  name: multi_json
156
170
  requirement: !ruby/object:Gem::Requirement