faraday_middleware-escher 0.1.0 → 0.2.0

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: 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