api_proxy 0.1.1 → 0.1.2

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
  SHA256:
3
- metadata.gz: 4c991e9ecea560efcea8a7755aca429b6f5284cdea11accaa98c7f72180c4807
4
- data.tar.gz: 0ed0e23a225bae5b54502ed8fad38eb463e4bbf1f3d3c08a63a00904f7075f26
3
+ metadata.gz: 850e6c12b86a5c88c752864553bb26b391498f148d21640c6134db2df615e369
4
+ data.tar.gz: a2913cb8b94b47f6deea174faa8b96a802c1bff42dd5c6771a878df198ce82a4
5
5
  SHA512:
6
- metadata.gz: 81aafbca71e95e146baa0f542d7cecda59a43b22ac0f7aa1bdd96c23b09e17f978d046d1b2bc0d7efc7b70c3460964da51938449421e6387c656da28317223f8
7
- data.tar.gz: 2b6e1a7b058d63a6dcc4fa89c6c64ce94f4f2ea2f6625b087f6c9a7ae3c146aaa84febdec5c1cbe359a7fe3af666711e0dbca021b2173c970015b32db48f6f80
6
+ metadata.gz: b6888a33aa5ca0ccfa834995e8f4f408da2c930da243abc53c757c4660a144fa0e038c9c334634ddbcd14768f012f82d0134fdf8d8b919928a1cd87350fc0d73
7
+ data.tar.gz: 69b9061cdb5939387c348b71c8986813b752c684e46a2b83481f8f20b4a322f2c1e734dc701be44bf01086c98d0ba5ce3500834910bee4acb916500b1d17f0c1
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- api_proxy (0.1.1)
4
+ api_proxy (0.1.2)
5
5
  api_signature (~> 0.1.2)
6
- httparty (~> 0.15.7)
6
+ httparty (>= 0.15)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -57,7 +57,7 @@ GEM
57
57
  guard-compat (~> 1.1)
58
58
  rspec (>= 2.99.0, < 4.0)
59
59
  hashdiff (0.3.7)
60
- httparty (0.15.7)
60
+ httparty (0.16.2)
61
61
  multi_xml (>= 0.5.2)
62
62
  i18n (1.0.1)
63
63
  concurrent-ruby (~> 1.0)
data/api_proxy.gemspec CHANGED
@@ -32,5 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
33
33
 
34
34
  spec.add_dependency 'api_signature', '~> 0.1.2'
35
- spec.add_dependency 'httparty', '~> 0.15.7'
35
+ spec.add_dependency 'httparty', '>= 0.15'
36
36
  end
@@ -2,7 +2,15 @@
2
2
 
3
3
  module ApiProxy
4
4
  class Config
5
- attr_accessor :api_key, :api_secret, :url_scheme, :api_host, :api_port, :api_prefix, :request_starts_with
5
+ attr_accessor :api_key,
6
+ :api_secret,
7
+ :url_scheme,
8
+ :api_host,
9
+ :api_port,
10
+ :api_prefix,
11
+ :request_starts_with,
12
+ :request_allowed,
13
+ :custom_headers
6
14
 
7
15
  def initialize
8
16
  load_defaults
@@ -18,6 +26,9 @@ module ApiProxy
18
26
 
19
27
  @api_prefix = '/api/v1/'
20
28
  @request_starts_with = '/_ts'
29
+
30
+ @request_allowed = ->(_env) { true }
31
+ @custom_headers = ->(_env) { {} }
21
32
  end
22
33
  end
23
34
  end
@@ -8,7 +8,7 @@ module ApiProxy
8
8
  end
9
9
 
10
10
  def call(env)
11
- return @app.call(env) unless env['REQUEST_PATH'].start_with?(@config.request_starts_with)
11
+ return @app.call(env) unless allow_request?(env)
12
12
 
13
13
  builder = RequestOptionsBuilder.new(env, @config)
14
14
  request = ApiProxy::Request.new(builder)
@@ -17,5 +17,11 @@ module ApiProxy
17
17
 
18
18
  Rack::Response.new(response.to_s, response.code, request.headers)
19
19
  end
20
+
21
+ def allow_request?(env)
22
+ return false unless env['REQUEST_PATH'].start_with?(@config.request_starts_with)
23
+
24
+ @config.request_allowed.call(env)
25
+ end
20
26
  end
21
27
  end
@@ -20,7 +20,7 @@ module ApiProxy
20
20
  end
21
21
 
22
22
  def options
23
- { headers: signature_builder.headers, format: :json }
23
+ { headers: headers, format: :json }
24
24
  end
25
25
 
26
26
  def url
@@ -33,6 +33,12 @@ module ApiProxy
33
33
 
34
34
  private
35
35
 
36
+ def headers
37
+ custom_headers = config.custom_headers.call(env)
38
+
39
+ signature_builder.headers.merge(custom_headers)
40
+ end
41
+
36
42
  def signature_builder
37
43
  @signature_builder ||= ApiSignature::Builder.new(request_params)
38
44
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ApiProxy
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Malinovskiy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-01 00:00:00.000000000 Z
11
+ date: 2018-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -166,16 +166,16 @@ dependencies:
166
166
  name: httparty
167
167
  requirement: !ruby/object:Gem::Requirement
168
168
  requirements:
169
- - - "~>"
169
+ - - ">="
170
170
  - !ruby/object:Gem::Version
171
- version: 0.15.7
171
+ version: '0.15'
172
172
  type: :runtime
173
173
  prerelease: false
174
174
  version_requirements: !ruby/object:Gem::Requirement
175
175
  requirements:
176
- - - "~>"
176
+ - - ">="
177
177
  - !ruby/object:Gem::Version
178
- version: 0.15.7
178
+ version: '0.15'
179
179
  description:
180
180
  email:
181
181
  - igor.malinovskiy@netfixllc.org