samurai 0.2.22 → 0.2.23

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: .
11
11
  specs:
12
- samurai (0.2.21)
12
+ samurai (0.2.23)
13
13
  activeresource (>= 2.2.2)
14
14
 
15
15
  GEM
@@ -13,4 +13,58 @@ class Samurai::Message < Samurai::Base
13
13
  end
14
14
  end
15
15
 
16
+ DEFAULT_RESPONSE_MAPPINGS = {
17
+ # Transaction Responses
18
+ 'info processor.transaction success' => 'The transaction was successful.',
19
+ 'error processor.transaction declined' => 'The card was declined.',
20
+ 'error processor.issuer call' => 'Call the card issuer for further instructions.',
21
+ 'error processor.issuer unavailable' => 'The authorization did not respond within the alloted time.',
22
+ 'error input.card_number invalid' => 'The card number was invalid.',
23
+ 'error input.expiry_month invalid' => 'The expiration date month was invalid, or prior to today.',
24
+ 'error input.expiry_year invalid' => 'The expiration date year was invalid, or prior to today.',
25
+ 'error processor.pin invalid' => 'The PIN number is incorrect.',
26
+ 'error input.amount invalid' => 'The transaction amount was invalid.',
27
+ 'error processor.transaction declined_insufficient_funds' => 'The transaction was declined due to insufficient funds.',
28
+ 'error processor.network_gateway merchant_invalid' => 'The Merchant Number is incorrect.',
29
+ 'error input.merchant_login invalid' => 'The merchant ID is not valid or active.',
30
+ 'error input.store_number invalid' => 'Invalid Store Number.',
31
+ 'error processor.bank_info invalid' => 'Invalid banking information.',
32
+ 'error processor.transaction not_allowed' => 'Merchant can not accept this card.',
33
+ 'error processor.transaction type_invalid' => 'Requested transaction type is not allowed for this card/merchant.',
34
+ 'error processor.transaction method_invalid' => 'The requested transaction could not be performed for this merchant.',
35
+ 'error input.amount exceeds_limit' => 'The maximum transaction amount was exceeded.',
36
+ 'error input.cvv invalid' => 'The CVV data entered is not correct.',
37
+ 'error processor.network_gateway communication_error' => 'There was a fatal communication error.',
38
+ 'error processor.network_gateway unresponsive' => 'The processing network is temporarily unavailable.',
39
+ 'error processor.network_gateway merchant_invalid' => 'The merchant number is not on file.',
40
+
41
+ # AVS Responses
42
+ 'info processor.avs_result_code 0' => 'No response.',
43
+ 'info processor.avs_result_code Y' => 'The address and 5-digit ZIP match.',
44
+ 'info processor.avs_result_code Z' => 'The 5-digit ZIP matches, the address does not.',
45
+ 'info processor.avs_result_code X' => 'The address and 9-digit ZIP match.',
46
+ 'info processor.avs_result_code A' => 'The address matches, the ZIP does not.',
47
+ 'info processor.avs_result_code E' => 'There was an AVS error, or the data was illegible.',
48
+ 'info processor.avs_result_code R' => 'The AVS request timed out.',
49
+ 'info processor.avs_result_code S' => 'The issuer does not support AVS.',
50
+ 'info processor.avs_result_code F' => 'The street addresses and postal codes match.',
51
+ 'info processor.avs_result_code N' => 'The address and ZIP do not match.',
52
+
53
+ # CVV Responses
54
+ 'error input.cvv declined' => 'The CVV code was not correct.',
55
+ 'error input.cvv declined' => 'The CVV code was invalid.',
56
+ }
57
+
58
+ def self.response_mappings
59
+ @@response_mappings ||= DEFAULT_RESPONSE_MAPPINGS
60
+ end
61
+ def self.response_mappings=(_mappings)
62
+ @@response_mappings = DEFAULT_RESPONSE_MAPPINGS.merge(_mappings)
63
+ end
64
+
65
+ def description
66
+ _key = [subclass, context, key].join(' ')
67
+ self.class.response_mappings[_key] || ''
68
+ end
69
+
16
70
  end
@@ -1,3 +1,3 @@
1
1
  module Samurai
2
- VERSION = "0.2.22".freeze
2
+ VERSION = "0.2.23".freeze
3
3
  end
@@ -13,7 +13,7 @@ describe "processing authorizations" do
13
13
 
14
14
  it "should find the authorization" do
15
15
  transaction = Samurai::Transaction.find(@authorization.reference_id)
16
- transaction.reference_id.intern.should be_equal(@authorization.reference_id.intern)
16
+ transaction.reference_id.should == @authorization.reference_id
17
17
  end
18
18
 
19
19
  it "should successfully capture" do
@@ -23,13 +23,13 @@ describe "processing authorizations" do
23
23
 
24
24
  it "should capture an authorization without specifying an amount" do
25
25
  capture = @authorization.capture
26
- capture.amount.intern.should be_equal "#{1.0}".intern
26
+ capture.amount.should == "#{1.0}"
27
27
  capture.processor_response.success.should be_true
28
28
  end
29
29
 
30
30
  it "should partially capture an authorization" do
31
31
  capture = @authorization.capture(1.0 - BigDecimal('0.5'))
32
- capture.amount.intern.should be_equal "#{1.0 - BigDecimal('0.5')}".intern
32
+ capture.amount.should == "#{1.0 - BigDecimal('0.5')}"
33
33
  capture.processor_response.success.should be_true
34
34
  end
35
35
 
@@ -40,7 +40,7 @@ describe "processing authorizations" do
40
40
 
41
41
  it "should credit an authorization for the full amount by default" do
42
42
  credit = @authorization.credit
43
- credit.amount.intern.should be_equal "#{1.0}".intern
43
+ credit.amount.should == "#{1.0}"
44
44
  pending "the response is not successful since the authorization hasn't settled" do
45
45
  credit.processor_response.success.should be_true
46
46
  end
@@ -48,7 +48,7 @@ describe "processing authorizations" do
48
48
 
49
49
  it "should partially credit an authorization" do
50
50
  credit = @authorization.credit(1.0 - BigDecimal('0.5'))
51
- credit.amount.intern.should be_equal "#{1.0 - BigDecimal('0.5')}".intern
51
+ credit.amount.should == "#{1.0 - BigDecimal('0.5')}"
52
52
  pending "the response is not successful since the authorization hasn't settled" do
53
53
  credit.processor_response.success.should be_true
54
54
  end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe "message responses" do
4
+
5
+ it 'should display processor_transaction_success' do
6
+ message = Samurai::Message.new(:subclass=>'info', :context=>'processor.transaction', :key=>'success')
7
+ message.description.should == 'The transaction was successful.'
8
+ end
9
+ it 'should display processor_transaction_declined' do
10
+ message = Samurai::Message.new(:subclass=>'error', :context=>'processor.transaction', :key=>'declined')
11
+ message.description.should == 'The card was declined.'
12
+ end
13
+ it 'should display processor_issuer_call' do
14
+ message = Samurai::Message.new(:subclass=>'error', :context=>'processor.issuer', :key=>'call')
15
+ message.description.should == 'Call the card issuer for further instructions.'
16
+ end
17
+ it 'should display processor_issuer_unavailable' do
18
+ message = Samurai::Message.new(:subclass=>'error', :context=>'processor.issuer', :key=>'unavailable')
19
+ message.description.should == 'The authorization did not respond within the alloted time.'
20
+ end
21
+ it 'should display input_card_number_invalid' do
22
+ message = Samurai::Message.new(:subclass=>'error', :context=>'input.card_number', :key=>'invalid')
23
+ message.description.should == 'The card number was invalid.'
24
+ end
25
+ it 'should display input_expiry_month_invalid' do
26
+ message = Samurai::Message.new(:subclass=>'error', :context=>'input.expiry_month', :key=>'invalid')
27
+ message.description.should == 'The expiration date month was invalid, or prior to today.'
28
+ end
29
+ it 'should display input_expiry_year_invalid' do
30
+ message = Samurai::Message.new(:subclass=>'error', :context=>'input.expiry_year', :key=>'invalid')
31
+ message.description.should == 'The expiration date year was invalid, or prior to today.'
32
+ end
33
+ it 'should display input_amount_invalid' do
34
+ message = Samurai::Message.new(:subclass=>'error', :context=>'input.amount', :key=>'invalid')
35
+ message.description.should == 'The transaction amount was invalid.'
36
+ end
37
+ it 'should display processor_transaction_declined_insufficient_funds' do
38
+ message = Samurai::Message.new(:subclass=>'error', :context=>'processor.transaction', :key=>'declined_insufficient_funds')
39
+ message.description.should == 'The transaction was declined due to insufficient funds.'
40
+ end
41
+
42
+ end
@@ -33,9 +33,8 @@ describe "processing purchases" do
33
33
  end
34
34
 
35
35
  it "should be able to credit a settled purchase" do
36
- pending "currently we cannot force settle a purchase, so can't test this properly" do
37
- credit = @purchase.credit
38
- credit.processor_response.success.should be_true
39
- end
36
+ pending "currently we cannot force settle a purchase, so can't test this properly"
37
+ credit = @purchase.credit
38
+ credit.processor_response.success.should be_true
40
39
  end
41
40
  end
data/spec/spec_helper.rb CHANGED
@@ -27,7 +27,7 @@ Samurai.options = {
27
27
  :site => SITE,
28
28
  :merchant_key => ENV['merchant_key'] || 'a1ebafb6da5238fb8a3ac9f6',
29
29
  :merchant_password => ENV['merchant_password'] || 'ae1aa640f6b735c4730fbb56',
30
- :processor_token => ENV['processor_token'] || '69ac9c704329bb067d427bf0'
30
+ :processor_token => ENV['processor_token'] || '5a0e1ca1e5a11a2997bbf912'
31
31
  }
32
32
 
33
33
 
@@ -25,18 +25,19 @@ module TransparentRedirectHelper
25
25
 
26
26
  def default_payment_method_params
27
27
  {
28
+ 'sandbox' => true,
28
29
  'redirect_url' => 'http://test.host',
29
30
  'merchant_key' => Samurai.merchant_key,
30
31
  'custom' => 'custom',
31
32
  'credit_card[first_name]' => 'FirstName',
32
33
  'credit_card[last_name]' => 'LastName',
33
- 'credit_card[address_1]' => '123 Main St',
34
+ 'credit_card[address_1]' => '1000 1st Av',
34
35
  'credit_card[address_2]' => '',
35
36
  'credit_card[city]' => 'Chicago',
36
37
  'credit_card[state]' => 'IL',
37
- 'credit_card[zip]' => '60610',
38
- 'credit_card[card_number]' => '4222222222222',
39
- 'credit_card[cvv]' => '123',
38
+ 'credit_card[zip]' => '10101',
39
+ 'credit_card[card_number]' => '4111111111111111',
40
+ 'credit_card[cvv]' => '111',
40
41
  'credit_card[expiry_month]' => '05',
41
42
  'credit_card[expiry_year]' => '2014',
42
43
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samurai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.22
4
+ version: 0.2.23
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-26 00:00:00.000000000Z
13
+ date: 2011-11-04 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activeresource
17
- requirement: &70293528504060 !ruby/object:Gem::Requirement
17
+ requirement: &70268836094780 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 2.2.2
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70293528504060
25
+ version_requirements: *70268836094780
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &70293528503540 !ruby/object:Gem::Requirement
28
+ requirement: &70268836094280 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.0.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70293528503540
36
+ version_requirements: *70268836094280
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &70293528503060 !ruby/object:Gem::Requirement
39
+ requirement: &70268836093800 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 2.6.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70293528503060
47
+ version_requirements: *70268836093800
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: fakeweb
50
- requirement: &70293528502500 !ruby/object:Gem::Requirement
50
+ requirement: &70268836093420 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70293528502500
58
+ version_requirements: *70268836093420
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: ruby-debug19
61
- requirement: &70293528501880 !ruby/object:Gem::Requirement
61
+ requirement: &70268836092920 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70293528501880
69
+ version_requirements: *70268836092920
70
70
  description: If you are an online merchant and using samurai.feefighters.com, this
71
71
  gem will make your life easy. Integrate with the samurai.feefighters.com portal
72
72
  and process transaction.
@@ -102,13 +102,11 @@ files:
102
102
  - lib/samurai/version.rb
103
103
  - samurai.gemspec
104
104
  - spec/lib/authorization_spec.rb
105
- - spec/lib/generate_docs_spec.rb.bak
105
+ - spec/lib/message_spec.rb
106
106
  - spec/lib/payment_method_spec.rb
107
107
  - spec/lib/processor_spec.rb
108
108
  - spec/lib/purchase_spec.rb
109
109
  - spec/spec_helper.rb
110
- - spec/support/http_proxy.rb
111
- - spec/support/response_logger.rb
112
110
  - spec/support/transaction_seed.rb
113
111
  - spec/support/transparent_redirect_helper.rb
114
112
  homepage: http://rubygems.org/gems/samurai
@@ -1,178 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "generate documentation" do
4
- include ResponseLoggerHelper
5
-
6
- before(:all) do
7
- @logger = ResponseLogger.new(File.open('response_log.html', 'w'))
8
- end
9
- after(:all) do
10
- @logger.close!
11
- end
12
-
13
- before do
14
- @logger.begin_section example.full_description.sub(/generate documentation/, '').titleize
15
-
16
- @params = {
17
- 'redirect_url' => 'http://test.host',
18
- 'merchant_key' => Samurai.merchant_key,
19
- 'custom' => 'custom',
20
- 'credit_card[first_name]' => 'FirstName',
21
- 'credit_card[last_name]' => 'LastName',
22
- 'credit_card[address_1]' => '123 Main St',
23
- 'credit_card[address_2]' => '',
24
- 'credit_card[city]' => 'Chicago',
25
- 'credit_card[state]' => 'IL',
26
- 'credit_card[zip]' => '60610',
27
- 'credit_card[card_number]' => '4222222222222',
28
- 'credit_card[cvv]' => '123',
29
- 'credit_card[expiry_month]' => '05',
30
- 'credit_card[expiry_year]' => '2014',
31
- }
32
-
33
- Samurai::Base.instance_eval do
34
- def connection(refresh = false)
35
- if defined?(@connection) || superclass == ActiveResource::Base
36
- @connection ||= begin
37
- c = HttpProxyConnection.new(site, format)
38
- c.proxy = proxy if proxy
39
- c.user = user if user
40
- c.password = password if password
41
- c.auth_type = auth_type if auth_type
42
- c.timeout = timeout if timeout
43
- c.ssl_options = ssl_options if ssl_options
44
- c
45
- end
46
- else
47
- superclass.connection
48
- end
49
- end
50
- end
51
- Samurai::Base.connection
52
- end
53
-
54
- after do
55
- @logger.end_section
56
- end
57
-
58
- describe 'with an invalid payment method' do
59
- it 'should not create the payment method with missing card_number' do
60
- @params.delete 'credit_card[card_number]'
61
- data = create_payment_method(@params)
62
- log_request_response! data[:request], data[:response]
63
- data[:payment_method_token].should =~ /^[0-9a-z]{24}$/
64
- Samurai::PaymentMethod.find data[:payment_method_token]
65
- log_http!
66
- end
67
-
68
- it 'should create the payment method with invalid card_number format' do
69
- @params['credit_card[card_number]'] = '12345'
70
- data = create_payment_method(@params)
71
- log_request_response! data[:request], data[:response]
72
- data[:payment_method_token].should =~ /^[0-9a-z]{24}$/
73
- Samurai::PaymentMethod.find data[:payment_method_token]
74
- log_http!
75
- end
76
-
77
- it 'should create the payment method with blank cvv' do
78
- @params['credit_card[cvv]'] = ''
79
- data = create_payment_method(@params)
80
- log_request_response! data[:request], data[:response]
81
- data[:payment_method_token].should =~ /^[0-9a-z]{24}$/
82
- Samurai::PaymentMethod.find data[:payment_method_token]
83
- log_http!
84
- end
85
- end
86
-
87
- describe 'with a valid payment method' do
88
- before do
89
- @amount = '1.00' # response code: card number is declined
90
- @data = create_payment_method(@params)
91
- end
92
- it 'should create the payment method' do
93
- log_request_response! @data[:request], @data[:response]
94
- @data[:payment_method_token].should =~ /^[0-9a-z]{24}$/
95
- Samurai::PaymentMethod.find @data[:payment_method_token]
96
- log_http!
97
- end
98
- it 'should create a valid transaction' do
99
- purchase = Samurai::Processor.purchase(@data[:payment_method_token], @amount)
100
- log_http!
101
- purchase.processor_response.success.should be_true
102
- end
103
- end
104
-
105
- describe 'with a declined card' do
106
- before do
107
- @amount = '3.00' # response code: card number is declined
108
- @data = create_payment_method(@params)
109
- end
110
- it 'should create the payment method' do
111
- log_request_response! @data[:request], @data[:response]
112
- @data[:payment_method_token].should =~ /^[0-9a-z]{24}$/
113
- Samurai::PaymentMethod.find @data[:payment_method_token]
114
- log_http!
115
- end
116
- it 'should create a valid transaction' do
117
- purchase = Samurai::Processor.purchase(@data[:payment_method_token], @amount)
118
- log_http!
119
- purchase.processor_response.success.should be_false
120
- end
121
- end
122
-
123
- describe 'with an expired card' do
124
- before do
125
- @amount = '8.00' # response code: card is expired
126
- @data = create_payment_method(@params)
127
- end
128
- it 'should create the payment method' do
129
- log_request_response! @data[:request], @data[:response]
130
- @data[:payment_method_token].should =~ /^[0-9a-z]{24}$/
131
- Samurai::PaymentMethod.find @data[:payment_method_token]
132
- log_http!
133
- end
134
- it 'should create a valid transaction' do
135
- purchase = Samurai::Processor.purchase(@data[:payment_method_token], @amount)
136
- log_http!
137
- purchase.processor_response.success.should be_false
138
- end
139
- end
140
-
141
- describe 'with a card with incorrect cvv' do
142
- before do
143
- @amount = '6.00' # response code: card number is invalid
144
- @data = create_payment_method(@params)
145
- end
146
- it 'should create the payment method' do
147
- log_request_response! @data[:request], @data[:response]
148
- @data[:payment_method_token].should =~ /^[0-9a-z]{24}$/
149
- Samurai::PaymentMethod.find @data[:payment_method_token]
150
- log_http!
151
- end
152
- it 'should create a valid transaction' do
153
- purchase = Samurai::Processor.purchase(@data[:payment_method_token], @amount)
154
- log_http!
155
- purchase.processor_response.success.should be_false
156
- end
157
- end
158
-
159
- describe 'with an nonexistant card' do
160
- before do
161
- @params['credit_card[card_number]'] = '4222222222222'
162
- @amount = '6.00' # response code: card number is invalid
163
- @data = create_payment_method(@params)
164
- end
165
- it 'should create the payment method' do
166
- log_request_response! @data[:request], @data[:response]
167
- @data[:payment_method_token].should =~ /^[0-9a-z]{24}$/
168
- Samurai::PaymentMethod.find @data[:payment_method_token]
169
- log_http!
170
- end
171
- it 'should create a valid transaction' do
172
- purchase = Samurai::Processor.purchase(@data[:payment_method_token], @amount)
173
- log_http!
174
- purchase.processor_response.success.should be_false
175
- end
176
- end
177
-
178
- end
@@ -1,40 +0,0 @@
1
- require 'active_resource/connection'
2
-
3
- class HttpProxy
4
- attr_accessor :request, :response
5
-
6
- def initialize(http, options={})
7
- @http = http
8
- @response = nil
9
- @request = {}
10
- end
11
-
12
- def method_missing(meth, *args, &block)
13
- case meth
14
- when :post, :put
15
- @request = {
16
- :method => meth,
17
- :path => args[0],
18
- :body => args[1],
19
- :headers => args[2],
20
- }
21
- when :get, :delete
22
- @request = {
23
- :method => meth,
24
- :path => args[0],
25
- :headers => args[1],
26
- }
27
- end
28
- @response = @http.send(meth, *args, &block)
29
- end
30
-
31
- def respond_to?(meth)
32
- super || @http.respond_to?(meth)
33
- end
34
- end
35
-
36
- class HttpProxyConnection < ActiveResource::Connection
37
- def http
38
- @http ||= HttpProxy.new(configure_http(new_http))
39
- end
40
- end
@@ -1,71 +0,0 @@
1
- require "erb"
2
-
3
- class ResponseLogger
4
- include ERB::Util
5
-
6
- def initialize(io)
7
- @sections = []
8
- @io = io
9
- @io.puts '<div class="wrapper">'
10
- end
11
-
12
- def close!
13
- @io.puts '</div>'
14
- @sections.each do |section|
15
- @io.puts "<a href='##{section[:id]}'>#{section[:name]}</a><br>"
16
- end
17
- end
18
-
19
- def begin_section(name)
20
- @sections << {:name=>name, :id=>h(name.parameterize)}
21
- @io.puts "<article class='example span-8' id='#{h name.parameterize}'>"
22
- @io.puts " <h3>#{h name}</h3>"
23
- end
24
-
25
- def end_section
26
- @io.puts "</article>"
27
- @io.puts "<hr>"
28
- end
29
-
30
- def log(request, response, options={})
31
- @io.puts ' <div class="code http-request"><em class="lang">HTTP Request</em>'
32
- @io.puts " <pre><strong>#{h request[:method].to_s.upcase} #{h request[:path]}</strong><br>"
33
- @io.puts "Headers: #{h request[:headers].inject({}) {|h, (k,v)| h[k] = (v.is_a?(Array) ? v.first : v); h }}</pre>"
34
- @io.puts ' </div>'
35
- if request[:body]
36
- @io.puts ' <div class="code xml">'
37
- @io.puts ' <em class="lang">XML Payload</em>'
38
- @io.puts " <pre class='prettyprint lang-xml'>#{h request[:body]}</pre>"
39
- @io.puts ' </div>'
40
- end
41
- @io.puts ' <div class="code http-response">'
42
- @io.puts " <em class='lang'>HTTP Response: #{h response.code}</em>"
43
- @io.puts " <pre class='prettyprint lang-xml'><code>#{h response.body}</code></pre>"
44
- @io.puts " </div>"
45
- end
46
-
47
- end
48
-
49
- module ResponseLoggerHelper
50
- def log_http! options={}
51
- @logger.log Samurai::Base.connection.send(:http).request,
52
- Samurai::Base.connection.send(:http).response,
53
- options
54
- end
55
-
56
- def log_request_response! request, response, options={}
57
- def request.[](v)
58
- case v
59
- when :method
60
- return self.method
61
- when :path
62
- return self.path
63
- when :headers
64
- return self.to_hash
65
- else
66
- super
67
- end
68
- end
69
- @logger.log request, response, options
70
- end
71
- end