Class: ApiValve::Proxy
- Inherits:
-
Object
- Object
- ApiValve::Proxy
- Extended by:
- Builder
- Defined in:
- lib/api_valve/proxy.rb,
lib/api_valve/proxy/builder.rb
Defined Under Namespace
Modules: Builder Classes: Runner
Constant Summary collapse
- FORWARDER_OPTIONS =
%w(endpoint request response).freeze
Instance Attribute Summary collapse
-
#forwarder ⇒ Object
readonly
Returns the value of attribute forwarder.
-
#middleware ⇒ Object
readonly
Returns the value of attribute middleware.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#route_set ⇒ Object
(also: #router)
readonly
Returns the value of attribute route_set.
Instance Method Summary collapse
- #call(env) ⇒ Object
- #deny(methods, path_regexp = nil, with: 'Error::Forbidden') ⇒ Object
- #forward(methods, path_regexp = nil, options = {}) ⇒ Object
- #forward_all(options = {}) ⇒ Object
-
#initialize(forwarder) ⇒ Proxy
constructor
A new instance of Proxy.
Methods included from Builder
build, from_config, from_hash, from_yaml
Constructor Details
#initialize(forwarder) ⇒ Proxy
Returns a new instance of Proxy.
19 20 21 22 23 24 |
# File 'lib/api_valve/proxy.rb', line 19 def initialize(forwarder) @forwarder = forwarder @route_set = RouteSet.new @middleware = Middleware.new use Middleware::Router, route_set end |
Instance Attribute Details
#forwarder ⇒ Object (readonly)
Returns the value of attribute forwarder.
15 16 17 |
# File 'lib/api_valve/proxy.rb', line 15 def forwarder @forwarder end |
#middleware ⇒ Object (readonly)
Returns the value of attribute middleware.
15 16 17 |
# File 'lib/api_valve/proxy.rb', line 15 def middleware @middleware end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
15 16 17 |
# File 'lib/api_valve/proxy.rb', line 15 def request @request end |
#route_set ⇒ Object (readonly) Also known as: router
Returns the value of attribute route_set.
15 16 17 |
# File 'lib/api_valve/proxy.rb', line 15 def route_set @route_set end |
Instance Method Details
#call(env) ⇒ Object
26 27 28 29 30 |
# File 'lib/api_valve/proxy.rb', line 26 def call(env) to_app.call(env) rescue ApiValve::Error::Client, ApiValve::Error::Server => e render_error e end |
#deny(methods, path_regexp = nil, with: 'Error::Forbidden') ⇒ Object
46 47 48 |
# File 'lib/api_valve/proxy.rb', line 46 def deny(methods, path_regexp = nil, with: 'Error::Forbidden') route_set.append(methods, path_regexp, {}, ->(*_args) { raise ApiValve.const_get(with) }) end |
#forward(methods, path_regexp = nil, options = {}) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/api_valve/proxy.rb', line 35 def forward(methods, path_regexp = nil, = {}) = .with_indifferent_access route_set.append(methods, path_regexp, .except(:request), proc { |request, match_data| forwarder.call request, {'match_data' => match_data}.merge([:request] || {}).with_indifferent_access }) end |