api-auth 1.2.6 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ee9363c952d199ecc16cd1f3395e5ac5bb6637b5
4
+ data.tar.gz: 13ebba43bab52e75146b91ff0d81a3e876a8ac1b
5
+ SHA512:
6
+ metadata.gz: fbd418e5584e7b84feb9070efac57c2a4215c011065884ef60e9d2a276f93d2c40b59f4c2eca22e1313aefaa6929726af3517d7f92353212c544f01e58c02770
7
+ data.tar.gz: 3052ae92cca8d52d3d40f53ba030266e0273b72679cf568e4ccbdb447efed94020b1b2d33f7a3426a54e825d6c32c4f4c6657af216debaaad18491ce0ccc6955
@@ -2,6 +2,8 @@ language: ruby
2
2
  rvm:
3
3
  - 1.8.7-p374
4
4
  - 1.9.3
5
+ - 2.1.5
6
+ - 2.2.1
5
7
  gemfile:
6
8
  - gemfiles/rails_23.gemfile
7
9
  - gemfiles/rails_30.gemfile
@@ -15,6 +17,20 @@ matrix:
15
17
  gemfile: gemfiles/rails_4.gemfile
16
18
  - rvm: 1.8.7-p374
17
19
  gemfile: gemfiles/rails_41.gemfile
20
+ - rvm: 2.1.5
21
+ gemfile: gemfiles/rails_23.gemfile
22
+ - rvm: 2.1.5
23
+ gemfile: gemfiles/rails_30.gemfile
24
+ - rvm: 2.1.5
25
+ gemfile: gemfiles/rails_31.gemfile
26
+ - rvm: 2.2.1
27
+ gemfile: gemfiles/rails_23.gemfile
28
+ - rvm: 2.2.1
29
+ gemfile: gemfiles/rails_30.gemfile
30
+ - rvm: 2.2.1
31
+ gemfile: gemfiles/rails_31.gemfile
32
+ - rvm: 2.2.1
33
+ gemfile: gemfiles/rails_32.gemfile
18
34
 
19
35
  notifications:
20
36
  email: false
@@ -1,3 +1,6 @@
1
+ # 1.3.0 (2015-03-12)
2
+ - Add a Faraday Request Driver (#64 nathanhoel)
3
+
1
4
  # 1.2.6 (2014-10-01)
2
5
  - Fix a bug in the ActionController request driver where calculated_md5 was
3
6
  incorrect in certain scenarios. (#53 karl-petter)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- api-auth (1.2.6)
4
+ api-auth (1.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -31,10 +31,12 @@ GEM
31
31
  bundler
32
32
  rake
33
33
  builder (2.1.2)
34
- curb (0.8.1)
34
+ curb (0.8.6)
35
35
  diff-lcs (1.1.3)
36
36
  erubis (2.6.6)
37
37
  abstract (>= 1.0.0)
38
+ faraday (0.9.1)
39
+ multipart-post (>= 1.2, < 3)
38
40
  httpi (2.1.0)
39
41
  rack
40
42
  rubyntlm (~> 0.3.2)
@@ -72,6 +74,7 @@ DEPENDENCIES
72
74
  api-auth!
73
75
  appraisal
74
76
  curb (~> 0.8.1)
77
+ faraday
75
78
  httpi
76
79
  multipart-post (~> 2.0)
77
80
  rake
data/README.md CHANGED
@@ -23,7 +23,7 @@ have to be written in the same language as the clients.
23
23
  content-type, content-MD5, request URI and the timestamp. If content-type or
24
24
  content-MD5 are not present, then a blank string is used in their place. If the
25
25
  timestamp isn't present, a valid HTTP date is automatically added to the
26
- request. The canonical string string is computed as follows:
26
+ request. The canonical string is computed as follows:
27
27
 
28
28
  canonical_string = 'content-type,content-MD5,request URI,timestamp'
29
29
 
@@ -69,6 +69,7 @@ Here is the current list of supported request objects:
69
69
  * ActionDispatch::Request
70
70
  * Curb (Curl::Easy)
71
71
  * RestClient
72
+ * Faraday
72
73
 
73
74
  ### HTTP Client Objects
74
75
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.6
1
+ 1.3.0
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_development_dependency "rest-client", "~> 1.6.0"
21
21
  s.add_development_dependency "curb", "~> 0.8.1"
22
22
  s.add_development_dependency "httpi"
23
+ s.add_development_dependency "faraday"
23
24
  s.add_development_dependency "multipart-post", "~> 2.0"
24
25
 
25
26
  s.files = `git ls-files`.split("\n")
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- api-auth (1.2.6)
4
+ api-auth (1.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -18,8 +18,10 @@ GEM
18
18
  bundler
19
19
  rake
20
20
  thor (>= 0.14.0)
21
- curb (0.8.5)
21
+ curb (0.8.6)
22
22
  diff-lcs (1.1.3)
23
+ faraday (0.9.1)
24
+ multipart-post (>= 1.2, < 3)
23
25
  httpi (2.1.0)
24
26
  rack
25
27
  rubyntlm (~> 0.3.2)
@@ -52,6 +54,7 @@ DEPENDENCIES
52
54
  api-auth!
53
55
  appraisal
54
56
  curb (~> 0.8.1)
57
+ faraday
55
58
  httpi
56
59
  multipart-post (~> 2.0)
57
60
  rake
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- api-auth (1.2.6)
4
+ api-auth (1.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -32,10 +32,12 @@ GEM
32
32
  rake
33
33
  thor (>= 0.14.0)
34
34
  builder (2.1.2)
35
- curb (0.8.5)
35
+ curb (0.8.6)
36
36
  diff-lcs (1.1.3)
37
37
  erubis (2.6.6)
38
38
  abstract (>= 1.0.0)
39
+ faraday (0.9.1)
40
+ multipart-post (>= 1.2, < 3)
39
41
  httpi (2.1.0)
40
42
  rack
41
43
  rubyntlm (~> 0.3.2)
@@ -74,6 +76,7 @@ DEPENDENCIES
74
76
  api-auth!
75
77
  appraisal
76
78
  curb (~> 0.8.1)
79
+ faraday
77
80
  httpi
78
81
  multipart-post (~> 2.0)
79
82
  rake
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- api-auth (1.2.6)
4
+ api-auth (1.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -32,9 +32,11 @@ GEM
32
32
  bundler
33
33
  rake
34
34
  builder (3.0.4)
35
- curb (0.8.5)
35
+ curb (0.8.6)
36
36
  diff-lcs (1.1.3)
37
37
  erubis (2.7.0)
38
+ faraday (0.9.1)
39
+ multipart-post (>= 1.2, < 3)
38
40
  hike (1.2.3)
39
41
  httpi (2.1.0)
40
42
  rack
@@ -80,6 +82,7 @@ DEPENDENCIES
80
82
  api-auth!
81
83
  appraisal
82
84
  curb (~> 0.8.1)
85
+ faraday
83
86
  httpi
84
87
  multipart-post (~> 2.0)
85
88
  rake
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- api-auth (1.2.6)
4
+ api-auth (1.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -31,9 +31,11 @@ GEM
31
31
  bundler
32
32
  rake
33
33
  builder (3.0.4)
34
- curb (0.8.5)
34
+ curb (0.8.6)
35
35
  diff-lcs (1.1.3)
36
36
  erubis (2.7.0)
37
+ faraday (0.9.1)
38
+ multipart-post (>= 1.2, < 3)
37
39
  hike (1.2.3)
38
40
  httpi (2.1.0)
39
41
  rack
@@ -79,6 +81,7 @@ DEPENDENCIES
79
81
  api-auth!
80
82
  appraisal
81
83
  curb (~> 0.8.1)
84
+ faraday
82
85
  httpi
83
86
  multipart-post (~> 2.0)
84
87
  rake
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- api-auth (1.2.6)
4
+ api-auth (1.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -32,9 +32,11 @@ GEM
32
32
  rake
33
33
  atomic (1.1.16)
34
34
  builder (3.1.4)
35
- curb (0.8.5)
35
+ curb (0.8.6)
36
36
  diff-lcs (1.1.3)
37
37
  erubis (2.7.0)
38
+ faraday (0.9.1)
39
+ multipart-post (>= 1.2, < 3)
38
40
  httpi (2.1.0)
39
41
  rack
40
42
  rubyntlm (~> 0.3.2)
@@ -76,6 +78,7 @@ DEPENDENCIES
76
78
  api-auth!
77
79
  appraisal
78
80
  curb (~> 0.8.1)
81
+ faraday
79
82
  httpi
80
83
  multipart-post (~> 2.0)
81
84
  rake
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- api-auth (1.2.6)
4
+ api-auth (1.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -35,9 +35,11 @@ GEM
35
35
  rake
36
36
  thor (>= 0.14.0)
37
37
  builder (3.2.2)
38
- curb (0.8.5)
38
+ curb (0.8.6)
39
39
  diff-lcs (1.1.3)
40
40
  erubis (2.7.0)
41
+ faraday (0.9.1)
42
+ multipart-post (>= 1.2, < 3)
41
43
  httpi (2.1.0)
42
44
  rack
43
45
  rubyntlm (~> 0.3.2)
@@ -80,6 +82,7 @@ DEPENDENCIES
80
82
  api-auth!
81
83
  appraisal
82
84
  curb (~> 0.8.1)
85
+ faraday
83
86
  httpi
84
87
  multipart-post (~> 2.0)
85
88
  rake
@@ -11,6 +11,7 @@ require 'api_auth/request_drivers/action_controller'
11
11
  require 'api_auth/request_drivers/action_dispatch'
12
12
  require 'api_auth/request_drivers/rack'
13
13
  require 'api_auth/request_drivers/httpi'
14
+ require 'api_auth/request_drivers/faraday'
14
15
 
15
16
  require 'api_auth/headers'
16
17
  require 'api_auth/base'
@@ -17,7 +17,7 @@ module ApiAuth
17
17
  # Returns the HTTP request object with the modified headers.
18
18
  #
19
19
  # request: The request can be a Net::HTTP, ActionDispatch::Request,
20
- # Curb (Curl::Easy) or a RestClient object.
20
+ # Curb (Curl::Easy), RestClient object or Faraday::Request.
21
21
  #
22
22
  # access_id: The public unique identifier for the client
23
23
  #
@@ -61,7 +61,7 @@ module ApiAuth
61
61
  def request_too_old?(request)
62
62
  headers = Headers.new(request)
63
63
  # 900 seconds is 15 minutes
64
- begin
64
+ begin
65
65
  Time.httpdate(headers.timestamp).utc < (Time.now.utc - 900)
66
66
  rescue ArgumentError
67
67
  true
@@ -34,6 +34,8 @@ module ApiAuth
34
34
  ActionControllerRequest.new(request)
35
35
  when /HTTPI::Request/
36
36
  HttpiRequest.new(request)
37
+ when /Faraday::Request/
38
+ FaradayRequest.new(request)
37
39
  else
38
40
  nil
39
41
  end
@@ -0,0 +1,86 @@
1
+ module ApiAuth
2
+
3
+ module RequestDrivers # :nodoc:
4
+
5
+ class FaradayRequest # :nodoc:
6
+
7
+ include ApiAuth::Helpers
8
+
9
+ def initialize(request)
10
+ @request = request
11
+ @headers = fetch_headers
12
+ true
13
+ end
14
+
15
+ def set_auth_header(header)
16
+ @request.headers.merge!({ "Authorization" => header })
17
+ @headers = fetch_headers
18
+ @request
19
+ end
20
+
21
+ def calculated_md5
22
+ if @request.body
23
+ body = @request.body
24
+ else
25
+ body = ''
26
+ end
27
+ md5_base64digest(body)
28
+ end
29
+
30
+ def populate_content_md5
31
+ if ['POST', 'PUT'].include?(@request.method.to_s.upcase)
32
+ @request.headers["Content-MD5"] = calculated_md5
33
+ end
34
+ end
35
+
36
+ def md5_mismatch?
37
+ if ['POST', 'PUT'].include?(@request.method.to_s.upcase)
38
+ calculated_md5 != content_md5
39
+ else
40
+ false
41
+ end
42
+ end
43
+
44
+ def fetch_headers
45
+ capitalize_keys @request.headers
46
+ end
47
+
48
+ def content_type
49
+ value = find_header(%w(CONTENT-TYPE CONTENT_TYPE HTTP_CONTENT_TYPE))
50
+ value.nil? ? "" : value
51
+ end
52
+
53
+ def content_md5
54
+ value = find_header(%w(CONTENT-MD5 CONTENT_MD5 HTTP-CONTENT-MD5 HTTP_CONTENT_MD5))
55
+ value.nil? ? "" : value
56
+ end
57
+
58
+ def request_uri
59
+ uri = URI::HTTP.new(nil, nil, nil, nil, nil, @request.path, nil, @request.params.to_query, nil)
60
+ uri.to_s
61
+ end
62
+
63
+ def set_date
64
+ @request.headers.merge!({ "DATE" => Time.now.utc.httpdate })
65
+ end
66
+
67
+ def timestamp
68
+ value = find_header(%w(DATE HTTP_DATE))
69
+ value.nil? ? "" : value
70
+ end
71
+
72
+ def authorization_header
73
+ find_header %w(Authorization AUTHORIZATION HTTP_AUTHORIZATION)
74
+ end
75
+
76
+ private
77
+
78
+ def find_header(keys)
79
+ keys.map {|key| @headers[key] }.compact.first
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
86
+ end
@@ -565,6 +565,102 @@ describe "ApiAuth" do
565
565
  ApiAuth.access_id(@signed_request).should == "1044"
566
566
  end
567
567
  end
568
+
569
+ describe "with Faraday::Request" do
570
+ before(:each) do
571
+ stubs = Faraday::Adapter::Test::Stubs.new do |stub|
572
+ stub.put('/resource.xml?foo=bar&bar=foo') { [200, {}, ''] }
573
+ end
574
+
575
+ @faraday_conn = Faraday.new do |builder|
576
+ builder.adapter :test, stubs do |stub|
577
+ end
578
+ end
579
+
580
+ @faraday_conn.put '/resource.xml?foo=bar&bar=foo' do |request|
581
+ @request = request
582
+ @request.headers.merge!({'Content-MD5' => "1B2M2Y8AsgTpgAmY7PhCfg==",
583
+ 'content-type' => 'text/plain',
584
+ 'DATE' => Time.now.utc.httpdate})
585
+ end
586
+
587
+ @headers = ApiAuth::Headers.new(@request)
588
+ @signed_request = ApiAuth.sign!(@request, @access_id, @secret_key)
589
+ end
590
+
591
+ it "should return a Faraday::Request object after signing it" do
592
+ ApiAuth.sign!(@request, @access_id, @secret_key).class.to_s.should match("Faraday::Request")
593
+ end
594
+
595
+ describe "md5 header" do
596
+ context "not already provided" do
597
+ it "should calculate for empty string" do
598
+ @faraday_conn.put '/resource.xml?foo=bar&bar=foo' do |request|
599
+ request.headers.merge!({'content-type' => 'text/plain',
600
+ 'DATE' => 'Mon, 23 Jan 1984 03:29:56 GMT'})
601
+
602
+ signed_request = ApiAuth.sign!(request, @access_id, @secret_key)
603
+ signed_request['Content-MD5'].should == "1B2M2Y8AsgTpgAmY7PhCfg=="
604
+ end
605
+ end
606
+
607
+ it "should calculate for real content" do
608
+ @faraday_conn.put '/resource.xml?foo=bar&bar=foo' do |request|
609
+ request.headers.merge!({'content-type' => 'text/plain',
610
+ 'DATE' => 'Mon, 23 Jan 1984 03:29:56 GMT'})
611
+ request.body = "hello\nworld"
612
+
613
+ signed_request = ApiAuth.sign!(request, @access_id, @secret_key)
614
+ signed_request['Content-MD5'].should == "kZXQvrKoieG+Be1rsZVINw=="
615
+ end
616
+ end
617
+ end
618
+
619
+ it "should leave the content-md5 alone if provided" do
620
+ @signed_request.headers['Content-MD5'].should == '1B2M2Y8AsgTpgAmY7PhCfg=='
621
+ end
622
+ end
623
+
624
+ it "should sign the request" do
625
+ @signed_request.headers['Authorization'].should == "APIAuth 1044:#{hmac(@secret_key, @request)}"
626
+ end
627
+
628
+ it "should authenticate a valid request" do
629
+ ApiAuth.authentic?(@signed_request, @secret_key).should be_true
630
+ end
631
+
632
+ it "should NOT authenticate a non-valid request" do
633
+ ApiAuth.authentic?(@signed_request, @secret_key+'j').should be_false
634
+ end
635
+
636
+ it "should NOT authenticate a mismatched content-md5 when body has changed" do
637
+ @faraday_conn.put '/resource.xml?foo=bar&bar=foo' do |request|
638
+ request.headers.merge!({'content-type' => 'text/plain',
639
+ 'DATE' => 'Mon, 23 Jan 1984 03:29:56 GMT'})
640
+ request.body = "hello\nworld"
641
+
642
+ signed_request = ApiAuth.sign!(request, @access_id, @secret_key)
643
+ signed_request.body = 'goodbye'
644
+ ApiAuth.authentic?(signed_request, @secret_key).should be_false
645
+ end
646
+ end
647
+
648
+ it "should NOT authenticate an expired request" do
649
+ @request.headers['DATE'] = 16.minutes.ago.utc.httpdate
650
+ signed_request = ApiAuth.sign!(@request, @access_id, @secret_key)
651
+ ApiAuth.authentic?(signed_request, @secret_key).should be_false
652
+ end
653
+
654
+ it "should NOT authenticate a request with an invalid date" do
655
+ @request.headers['DATE'] = "٢٠١٤-٠٩-٠٨ ١٦:٣١:١٤ +٠٣٠٠"
656
+ signed_request = ApiAuth.sign!(@request, @access_id, @secret_key)
657
+ ApiAuth.authentic?(signed_request, @secret_key).should be_false
658
+ end
659
+
660
+ it "should retrieve the access_id" do
661
+ ApiAuth.access_id(@signed_request).should == "1044"
662
+ end
663
+ end
568
664
  end
569
665
 
570
666
  end
@@ -18,7 +18,7 @@ describe "Rails integration" do
18
18
  respond_to do |format|
19
19
  format.xml { render :xml => "You are unauthorized to perform this action.", :status => 401 }
20
20
  format.json { render :json => "You are unauthorized to perform this action.", :status => 401 }
21
- format.html { render :text => "You are unauthorized to perform this action", :status => 401 }
21
+ format.html { render :text => "You are unauthorized to perform this action", :status => 401 }
22
22
  end
23
23
  end
24
24
 
@@ -6,6 +6,7 @@ require 'amatch'
6
6
  require 'rest_client'
7
7
  require 'curb'
8
8
  require 'httpi'
9
+ require 'faraday'
9
10
  require 'net/http/post/multipart'
10
11
 
11
12
  require 'active_support'
@@ -20,5 +21,5 @@ require 'active_resource/http_mock'
20
21
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
21
22
 
22
23
  RSpec.configure do |config|
23
-
24
+
24
25
  end
metadata CHANGED
@@ -1,190 +1,181 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
5
- prerelease:
4
+ version: 1.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mauricio Gomes
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-10-01 00:00:00.000000000 Z
11
+ date: 2015-03-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: appraisal
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: amatch
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rspec
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ~>
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
61
  version: 2.4.0
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ~>
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
68
  version: 2.4.0
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: actionpack
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ~>
73
+ - - "~>"
84
74
  - !ruby/object:Gem::Version
85
75
  version: 3.0.0
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ~>
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
82
  version: 3.0.0
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: activesupport
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ~>
87
+ - - "~>"
100
88
  - !ruby/object:Gem::Version
101
89
  version: 3.0.0
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ~>
94
+ - - "~>"
108
95
  - !ruby/object:Gem::Version
109
96
  version: 3.0.0
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: activeresource
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ~>
101
+ - - "~>"
116
102
  - !ruby/object:Gem::Version
117
103
  version: 3.0.0
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ~>
108
+ - - "~>"
124
109
  - !ruby/object:Gem::Version
125
110
  version: 3.0.0
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: rest-client
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ~>
115
+ - - "~>"
132
116
  - !ruby/object:Gem::Version
133
117
  version: 1.6.0
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ~>
122
+ - - "~>"
140
123
  - !ruby/object:Gem::Version
141
124
  version: 1.6.0
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: curb
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ~>
129
+ - - "~>"
148
130
  - !ruby/object:Gem::Version
149
131
  version: 0.8.1
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ~>
136
+ - - "~>"
156
137
  - !ruby/object:Gem::Version
157
138
  version: 0.8.1
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: httpi
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - ">="
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: faraday
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
172
165
  - !ruby/object:Gem::Version
173
166
  version: '0'
174
167
  - !ruby/object:Gem::Dependency
175
168
  name: multipart-post
176
169
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
170
  requirements:
179
- - - ~>
171
+ - - "~>"
180
172
  - !ruby/object:Gem::Version
181
173
  version: '2.0'
182
174
  type: :development
183
175
  prerelease: false
184
176
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
177
  requirements:
187
- - - ~>
178
+ - - "~>"
188
179
  - !ruby/object:Gem::Version
189
180
  version: '2.0'
190
181
  description: Full HMAC auth implementation for use in your gems and Rails apps.
@@ -193,10 +184,10 @@ executables: []
193
184
  extensions: []
194
185
  extra_rdoc_files: []
195
186
  files:
196
- - .document
197
- - .gitignore
198
- - .rspec
199
- - .travis.yml
187
+ - ".document"
188
+ - ".gitignore"
189
+ - ".rspec"
190
+ - ".travis.yml"
200
191
  - Appraisals
201
192
  - CHANGELOG.md
202
193
  - Gemfile
@@ -228,6 +219,7 @@ files:
228
219
  - lib/api_auth/request_drivers/action_controller.rb
229
220
  - lib/api_auth/request_drivers/action_dispatch.rb
230
221
  - lib/api_auth/request_drivers/curb.rb
222
+ - lib/api_auth/request_drivers/faraday.rb
231
223
  - lib/api_auth/request_drivers/httpi.rb
232
224
  - lib/api_auth/request_drivers/net_http.rb
233
225
  - lib/api_auth/request_drivers/rack.rb
@@ -242,33 +234,26 @@ files:
242
234
  - spec/test_helper.rb
243
235
  homepage: https://github.com/mgomes/api_auth
244
236
  licenses: []
237
+ metadata: {}
245
238
  post_install_message:
246
239
  rdoc_options: []
247
240
  require_paths:
248
241
  - lib
249
242
  required_ruby_version: !ruby/object:Gem::Requirement
250
- none: false
251
243
  requirements:
252
- - - ! '>='
244
+ - - ">="
253
245
  - !ruby/object:Gem::Version
254
246
  version: '0'
255
- segments:
256
- - 0
257
- hash: -882451281331760104
258
247
  required_rubygems_version: !ruby/object:Gem::Requirement
259
- none: false
260
248
  requirements:
261
- - - ! '>='
249
+ - - ">="
262
250
  - !ruby/object:Gem::Version
263
251
  version: '0'
264
- segments:
265
- - 0
266
- hash: -882451281331760104
267
252
  requirements: []
268
253
  rubyforge_project:
269
- rubygems_version: 1.8.23.2
254
+ rubygems_version: 2.2.2
270
255
  signing_key:
271
- specification_version: 3
256
+ specification_version: 4
272
257
  summary: Simple HMAC authentication for your APIs
273
258
  test_files:
274
259
  - spec/api_auth_spec.rb