ey_api_hmac 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -7,6 +7,7 @@ gem 'rake'
7
7
  gem 'json'
8
8
 
9
9
  group :test, :development do
10
+ gem 'pry'
10
11
  gem 'halorgium-auth-hmac'
11
12
  gem 'rack-client'
12
13
  gem 'rack-contrib'
@@ -9,19 +9,7 @@ module EY
9
9
  @auth_id = auth_id
10
10
  @auth_key = auth_key
11
11
  super(user_agent)
12
- end
13
-
14
- protected
15
-
16
- def client
17
- bak = self.backend
18
- #damn you scope!
19
- auth_id_arg = auth_id
20
- auth_key_arg = auth_key
21
- @client ||= Rack::Client.new do
22
- use EY::ApiHMAC::ApiAuth::Client, auth_id_arg, auth_key_arg
23
- run bak
24
- end
12
+ self.middlewares.unshift [EY::ApiHMAC::ApiAuth::Client, auth_id, auth_key]
25
13
  end
26
14
 
27
15
  end
@@ -1,4 +1,5 @@
1
1
  require 'rack/client'
2
+ require 'rack-idempotent'
2
3
  require 'json'
3
4
  require 'time'
4
5
 
@@ -6,12 +7,15 @@ module EY
6
7
  module ApiHMAC
7
8
  class BaseConnection
8
9
 
10
+ attr_accessor :middlewares
11
+
9
12
  def initialize(user_agent = nil)
10
13
  @standard_headers = {
11
14
  'Accept' => 'application/json',
12
15
  'HTTP_DATE' => Time.now.httpdate,
13
16
  'USER_AGENT' => user_agent || default_user_agent
14
17
  }
18
+ self.middlewares = [Rack::Idempotent]
15
19
  end
16
20
 
17
21
  def default_user_agent
@@ -74,10 +78,14 @@ module EY
74
78
  protected
75
79
 
76
80
  def client
77
- bak = self.backend
81
+ #damn you scope!
82
+ backend = self.backend
83
+ middlewares = self.middlewares
78
84
  @client ||= Rack::Client.new do
79
- use Rack::Idempotent
80
- run bak
85
+ middlewares.each do |middleware|
86
+ use *Array(middleware)
87
+ end
88
+ run backend
81
89
  end
82
90
  end
83
91
 
@@ -1,5 +1,5 @@
1
1
  module EY
2
2
  module ApiHMAC
3
- VERSION = "0.4.2"
3
+ VERSION = "0.4.3"
4
4
  end
5
5
  end
@@ -9,7 +9,7 @@ describe EY::ApiHMAC::AuthedConnection do
9
9
  describe "on 500" do
10
10
  before do
11
11
  @connection.backend = lambda do |env|
12
- ["500", {}, [""]]
12
+ [500, {}, [""]]
13
13
  end
14
14
  end
15
15
  it "raises an error" do
@@ -24,7 +24,7 @@ describe EY::ApiHMAC::AuthedConnection do
24
24
  describe "on bad body" do
25
25
  it "calls the error handler" do
26
26
  @connection.backend = lambda do |env|
27
- ["200", {"Content-Type" => "application/json"}, ["200 OK"]]
27
+ [200, {"Content-Type" => "application/json"}, ["200 OK"]]
28
28
  end
29
29
  errors = []
30
30
  @connection.handle_errors_with{|*args| errors << args; false}
@@ -41,4 +41,14 @@ describe EY::ApiHMAC::AuthedConnection do
41
41
  end
42
42
  end
43
43
  end
44
+ describe "uses Rack Idempotent" do
45
+ before do
46
+ @connection.backend = lambda do |env|
47
+ [408, {}, [""]]
48
+ end
49
+ end
50
+ it "raises an error" do
51
+ lambda { @connection.get("/") }.should raise_exception(Rack::Idempotent::RetryLimitExceeded)
52
+ end
53
+ end
44
54
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'pry'
2
+
1
3
  class MockAuth
2
4
  def initialize(is_found, auth_key)
3
5
  @is_found = is_found
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ey_api_hmac
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 2
10
- version: 0.4.2
9
+ - 3
10
+ version: 0.4.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Jacob Burkhart & Thorben Schr\xC3\xB6der & David Calavera & others"
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-07 00:00:00 Z
18
+ date: 2012-02-09 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rack-client