api_valve 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/api_valve/proxy.rb +20 -10
- data/lib/api_valve/router.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fdf08e3fa15d2bb46dc6f85ee53c681b696d574585b6be1e11dc7fc6b6527b1
|
4
|
+
data.tar.gz: 3cf720502939fe562d385a7347e681927e79519446111410f6ba8c8f1ad7fb52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e635bcd48b26f59cb92cd46551eb2b4de46fc23765a80c826c7f65993f52dfd232dceb4538586026c73a7d538a591aec96ffd681362c4f5ce1a3d9fbcf944a9
|
7
|
+
data.tar.gz: 2543e426f0b25a9a3b0c1970f3e4dfc81e9d01ccc6147888438d28bff60dca3c9768f98b9e98c4aaf49b090206df93616632a1f559e0454511b8dd83e9953fe7
|
data/lib/api_valve/proxy.rb
CHANGED
@@ -9,12 +9,13 @@ module ApiValve
|
|
9
9
|
self.request = Forwarder::Request
|
10
10
|
self.response = Forwarder::Response
|
11
11
|
|
12
|
-
define_callbacks :call
|
13
|
-
|
14
12
|
class << self
|
15
|
-
|
13
|
+
# Creates a n instance from a config hash and takes optional block
|
14
|
+
# which is executed in scope of the proxy
|
15
|
+
def build(config)
|
16
|
+
block = Proc.new if block_given? # capture the yield
|
16
17
|
from_hash(config).tap do |proxy|
|
17
|
-
proxy.instance_eval(&block)
|
18
|
+
proxy.instance_eval(&block) if block
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -35,7 +36,10 @@ module ApiValve
|
|
35
36
|
def from_hash(config)
|
36
37
|
config = config.with_indifferent_access
|
37
38
|
forwarder = Forwarder.new(forwarder_config(config))
|
38
|
-
new(forwarder).tap
|
39
|
+
new(forwarder).tap do |proxy|
|
40
|
+
Array.wrap(config[:use]).each { |mw| proxy.use mw }
|
41
|
+
proxy.build_routes_from_config config[:routes]
|
42
|
+
end
|
39
43
|
end
|
40
44
|
|
41
45
|
private
|
@@ -65,19 +69,22 @@ module ApiValve
|
|
65
69
|
def initialize(forwarder)
|
66
70
|
@forwarder = forwarder
|
67
71
|
@router = Router.new
|
72
|
+
@middlewares = []
|
68
73
|
end
|
69
74
|
|
70
75
|
def call(env)
|
71
|
-
|
72
|
-
|
76
|
+
stack = @middlewares.reverse.inject(@router) { |a, e| e.call a }
|
77
|
+
stack.call(env)
|
73
78
|
rescue ApiValve::Error::Client, ApiValve::Error::Server => e
|
74
79
|
render_error e
|
75
80
|
end
|
76
81
|
|
77
82
|
delegate :add_route, to: :router
|
78
83
|
|
79
|
-
def build_routes_from_config(
|
80
|
-
|
84
|
+
def build_routes_from_config(routes_config)
|
85
|
+
return forward_all unless routes_config
|
86
|
+
|
87
|
+
routes_config.each do |route_config|
|
81
88
|
method, path_regexp, request_override = *route_config.values_at('method', 'path', 'request')
|
82
89
|
method ||= 'any' # no method defined means all methods
|
83
90
|
if route_config['raise']
|
@@ -86,7 +93,6 @@ module ApiValve
|
|
86
93
|
forward method, path_regexp, request_override
|
87
94
|
end
|
88
95
|
end
|
89
|
-
forward_all unless config['routes']
|
90
96
|
end
|
91
97
|
|
92
98
|
def forward(methods, path_regexp = nil, request_override = {})
|
@@ -109,6 +115,10 @@ module ApiValve
|
|
109
115
|
end
|
110
116
|
end
|
111
117
|
|
118
|
+
def use(middleware, *args, &block)
|
119
|
+
@middlewares << proc { |app| middleware.new(app, *args, &block) }
|
120
|
+
end
|
121
|
+
|
112
122
|
protected
|
113
123
|
|
114
124
|
def render_error(error)
|
data/lib/api_valve/router.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_valve
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mkon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -120,14 +120,14 @@ dependencies:
|
|
120
120
|
requirements:
|
121
121
|
- - '='
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: 0.
|
123
|
+
version: 0.61.1
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
128
|
- - '='
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: 0.
|
130
|
+
version: 0.61.1
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: rubocop-rspec
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|