faraday_middleware-escher 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93e28632c2c22aaa0ab477dbda353b69696d2fb3
4
- data.tar.gz: 4712f9d091691aa0b820358acb2db74a4f5c6733
3
+ metadata.gz: e5baa8d8b8657adbefc20cd4ea7f580589d25be4
4
+ data.tar.gz: 2fc9ae873439e82ff218edd1a6b57c0490cdf1bb
5
5
  SHA512:
6
- metadata.gz: 7e0c93b74c6ff5de92c5bfef6aedb253ec62f138753d9a05cba5965c0e771f204f9f39c8d8e1a2ddf7c2bdf5385b5cceb5837258092ab96719c8dd7a609f42b5
7
- data.tar.gz: d3ca6593d986eea89548bd44e7b8d6957308ffe54241e69e82832a8a595f5557995fd7c09bdba5ced369d0a805250bfcd60317f94ac8c1046bbdf4e58f177fb2
6
+ metadata.gz: 148dfca784d915c177d7f1f6c70c4a16fb967c0c05c4d2584a504390deff9dfa7f4fda15aa2a30fa1440ad91f787103f22075ec3d358e5fecea3b53acaefd6c1
7
+ data.tar.gz: 6c303e8fb87111d00ba302d2437dbf728ffccfd3d73eeaf0e4f0041e6d8c642d95e3a18744ebedbeb6d155664c79edbfad9b354b31370e0f0f81856d833f4f3a
data/README.md CHANGED
@@ -28,7 +28,7 @@ The FaradayMiddleware::Escher::RequestSigner will help you sign your requests be
28
28
  require 'faraday_middleware/escher'
29
29
  conn = Faraday.new do |builder|
30
30
 
31
- builder.use FaradayMiddleware::Escher::RequestSigner, credential_scope: 'example/credential/scope' do
31
+ builder.use Faraday::Middleware::Escher::RequestSigner, credential_scope: 'example/credential/scope' do
32
32
  {api_key_id: 'EscherExample', api_secret: 'TheBeginningOfABeautifulFriendship'}
33
33
  end
34
34
 
@@ -38,7 +38,10 @@ The FaradayMiddleware::Escher::RequestSigner will help you sign your requests be
38
38
 
39
39
  ```
40
40
 
41
- TODO: Write usage instructions here
41
+
42
+ ### Response Validator
43
+
44
+ coming soon! @wip
42
45
 
43
46
  ## Contributing
44
47
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -21,8 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency('webmock')
22
22
 
23
23
  spec.add_dependency('faraday')
24
- spec.add_dependency('faraday_middleware')
25
-
26
24
  spec.add_dependency('escher')
27
25
 
28
26
  end
@@ -0,0 +1,8 @@
1
+ require 'escher'
2
+ require 'faraday'
3
+ require 'faraday/middleware'
4
+ module Faraday::Middleware::Escher
5
+ require 'faraday/middleware/escher/base'
6
+ require 'faraday/middleware/escher/request_signer'
7
+ require 'faraday/middleware/escher/response_validator'
8
+ end
@@ -1,5 +1,5 @@
1
1
  require 'socket'
2
- class FaradayMiddleware::Escher::BaseMiddleware < Faraday::Middleware
2
+ class Faraday::Middleware::Escher::Base < Faraday::Middleware
3
3
 
4
4
  def initialize(app,options={},&escher_keydb_constructor)
5
5
 
@@ -1,8 +1,8 @@
1
- class FaradayMiddleware::Escher::RequestSigner < FaradayMiddleware::Escher::BaseMiddleware
1
+ class Faraday::Middleware::Escher::RequestSigner < Faraday::Middleware::Escher::Base
2
2
 
3
3
  def call(env)
4
4
 
5
- escher = Escher::Auth.new(@escher_credential_scope, @escher_options)
5
+ escher = ::Escher::Auth.new(@escher_credential_scope, @escher_options)
6
6
 
7
7
  uri_path = env[:url].path
8
8
  endpoint = uri_path.empty? ? '/' : uri_path
@@ -0,0 +1,2 @@
1
+ class Faraday::Middleware::Escher::ResponseValidator
2
+ end
@@ -1,7 +1,14 @@
1
- require 'escher'
2
- require 'faraday_middleware'
3
- module FaradayMiddleware::Escher
4
- require 'faraday_middleware/escher/base_middleware'
5
- require 'faraday_middleware/escher/request_signer'
6
- require 'faraday_middleware/escher/response_validator'
7
- end
1
+ #backwardCompatibility
2
+ require 'faraday/middleware/escher'
3
+
4
+ begin
5
+ require 'faraday_middleware'
6
+ rescue LoadError
7
+ end
8
+
9
+ unless defined?(FaradayMiddleware)
10
+ module FaradayMiddleware
11
+ end
12
+ end
13
+
14
+ FaradayMiddleware::Escher ||= ::Faraday::Middleware::Escher
@@ -1,5 +1,5 @@
1
1
  require_relative '../spec_helper'
2
- describe FaradayMiddleware::Escher::BaseMiddleware do
2
+ describe FaradayMiddleware::Escher::Base do
3
3
 
4
4
  let(:app){double('app')}
5
5
 
@@ -8,16 +8,16 @@ describe FaradayMiddleware::Escher::BaseMiddleware do
8
8
  let(:api_secret){'superSecret'}
9
9
 
10
10
  let(:options){
11
-
12
11
  {
13
- api_key: api_key,
14
- api_secret: api_secret,
15
- host: host
12
+ host: host,
13
+ credential_scope: 'test/test/test'
16
14
  }
17
-
18
15
  }
19
16
 
20
- subject{ self.described_class.new(app,options) }
17
+ let(:key_db){{api_key_id: 'EscherExample', api_secret: 'TheBeginningOfABeautifulFriendship'}}
18
+
19
+
20
+ subject{ self.described_class.new(app,options) {key_db} }
21
21
 
22
22
  before do
23
23
  allow(Socket).to receive(:gethostname).and_return(host)
@@ -26,7 +26,7 @@ describe FaradayMiddleware::Escher::BaseMiddleware do
26
26
  describe '#initialize' do
27
27
  describe 'init take an options hash after app, and catch some of its value' do
28
28
 
29
- %W[ host api_key api_secret ].each do |element|
29
+ %W[ host ].each do |element|
30
30
  it "should save #{element} hast key's value under @#{element}" do
31
31
  expect(subject.instance_variable_get("@#{element}")).to eq options[element.to_sym]
32
32
  end
@@ -1,73 +1,58 @@
1
1
  require_relative '../spec_helper'
2
- describe FaradayMiddleware::Escher::RequestSigner do
2
+ describe Faraday::Middleware::Escher::RequestSigner do
3
3
  describe 'this is a faraday middleware witch instance will response to call method' do
4
4
 
5
5
  let(:api_key) { 'superKey' }
6
6
  let(:api_secret) { 'superSecret' }
7
7
  let(:host) { 'localhost' }
8
8
 
9
+ let(:target_url) { "http://api-with-escher.example.com" }
9
10
  let(:stubs) { Faraday::Adapter::Test::Stubs.new }
10
11
 
12
+ let(:request_expectations){ -> env {} }
13
+ let(:response_expectations){ -> env {} }
14
+
11
15
  subject do
12
16
 
13
17
  Faraday.new do |builder|
14
18
 
15
- builder.use FaradayMiddleware::Escher::RequestSigner,
16
- api_key: api_key,
17
- api_secret: api_secret,
18
- host: host
19
19
 
20
- builder.adapter :test, stubs do |stub|
21
- stub.get('/ebi') { |env| [200, {}, 'shrimp'] }
20
+ builder.use Faraday::Middleware::Escher::RequestSigner, credential_scope: 'example/credential/scope' do
21
+ {api_key_id: 'EscherExample', api_secret: 'TheBeginningOfABeautifulFriendship'}
22
22
  end
23
23
 
24
- end
25
-
26
- end
24
+ builder.use ExpectsMiddleware, request_expectations: request_expectations
25
+ builder.use ExpectsMiddleware, response_expectations: response_expectations
27
26
 
28
- let(:connection) do
29
- Faraday.new do |builder|
30
- builder.use FaradayMiddleware::Escher::RequestSigner,
31
- api_key: api_key,
32
- api_secret: api_secret,
33
- host: host
27
+ builder.adapter :test, stubs do |stub|
28
+ stub.get(target_url) { |env| [200, {}, 'shrimp'] }
29
+ end
34
30
 
35
- builder.use FaradayMiddleware::FollowRedirects
36
- builder.adapter Faraday.default_adapter
37
31
  end
32
+
38
33
  end
39
34
 
40
- let(:target_url) { "http://api-with-escher.example.com" }
41
35
 
42
36
  describe '#call' do
43
37
 
44
- it ''
45
-
46
- it "redirects" do
47
-
48
- # stubs.get('/uni') {[ 200, {}, 'urchin' ]}
49
-
50
- request_mock = stub_request(:get, target_url)
51
-
52
- puts request_mock.methods - Object.methods
53
-
54
- stub_request(:get, "http://facebook.com").to_return(
55
- :status => 302,
56
- :headers => {"Location" => "http://www.facebook.com/"})
57
-
58
- stub_request(:get, "http://www.facebook.com/").to_return(
59
- :status => 302,
60
- :headers => {"Location" => "https://www.facebook.com/"})
38
+ before do
39
+ @env = nil
40
+ end
61
41
 
62
- stub_request(:get, "https://www.facebook.com/")
42
+ let(:request_expectations) do
43
+ -> env do
44
+ @request_env = env
45
+ end
46
+ end
63
47
 
64
- response = connection.get "http://facebook.com"
48
+ it 'should insert escher request headers for the call' do
65
49
 
66
- expect(response.env[:url].to_s).to eq("https://www.facebook.com/")
50
+ expect( subject.get(target_url).status ).to eq 200
51
+ expect( @request_env[:request_headers]["X-Escher-Auth"].nil? ).to eq false
52
+ expect( @request_env[:request_headers]["X-Escher-Date"].nil? ).to eq false
67
53
 
68
54
  end
69
55
 
70
-
71
56
  end
72
57
 
73
58
  end
data/spec/spec_helper.rb CHANGED
@@ -45,4 +45,24 @@ RSpec.configure do |config|
45
45
  config.expect_with :rspec do |c|
46
46
  c.syntax = :expect
47
47
  end
48
+ end
49
+
50
+ class ExpectsMiddleware < Faraday::Middleware
51
+
52
+ def initialize(app,request_expectations:nil,response_expectations:nil)
53
+ super(app)
54
+ @request_expectations = request_expectations
55
+ @response_expectations = response_expectations
56
+ end
57
+
58
+ def call(env)
59
+
60
+ @request_expectations.call(env) if @request_expectations.respond_to?(:call)
61
+
62
+ @app.call(env).on_complete do |env|
63
+ @response_expectations.call(env) if @response_expectations.respond_to?(:call)
64
+ end
65
+
66
+ end
67
+
48
68
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday_middleware-escher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: faraday_middleware
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: escher
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -123,11 +109,12 @@ files:
123
109
  - Rakefile
124
110
  - VERSION
125
111
  - faraday_middleware-escher.gemspec
112
+ - lib/faraday/middleware/escher.rb
113
+ - lib/faraday/middleware/escher/base.rb
114
+ - lib/faraday/middleware/escher/request_signer.rb
115
+ - lib/faraday/middleware/escher/response_validator.rb
126
116
  - lib/faraday_middleware/escher.rb
127
- - lib/faraday_middleware/escher/base_middleware.rb
128
- - lib/faraday_middleware/escher/request_signer.rb
129
- - lib/faraday_middleware/escher/response_validator.rb
130
- - spec/escher/base_middleware_spec.rb
117
+ - spec/escher/base_spec.rb
131
118
  - spec/escher/request_signer_spec.rb
132
119
  - spec/spec_helper.rb
133
120
  homepage: https://github.com/adamluzsi/faraday_middleware-escher
@@ -155,6 +142,6 @@ signing_key:
155
142
  specification_version: 4
156
143
  summary: escher sign and validation for faraday http rest client
157
144
  test_files:
158
- - spec/escher/base_middleware_spec.rb
145
+ - spec/escher/base_spec.rb
159
146
  - spec/escher/request_signer_spec.rb
160
147
  - spec/spec_helper.rb
@@ -1,3 +0,0 @@
1
- class FaradayMiddleware::Escher::ResponseValidator
2
-
3
- end