class Rack::Joint
Constants
- VERSION
Attributes
app[R]
block[R]
Public Class Methods
new(app, &block)
click to toggle source
# File lib/rack/joint.rb, line 11 def initialize(app, &block) @app = app @block = block if block_given? end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/joint.rb, line 16 def call(env) rack_request = Rack::Request.new(env) mappings = Context.new(rack_request).instance_exec(&block) env_host = rack_request.host responses = valid_mapping(mappings, env_host) if check_redirect?(rack_request, responses) redirect_info(rack_request, responses) else app.call(env) end end
Private Instance Methods
check_redirect?(request, responses)
click to toggle source
@param request [Rack::Request] Request env. @param responses [Array] Mapped redirect response information. @return [Boolean]
# File lib/rack/joint.rb, line 42 def check_redirect?(request, responses) current_url = request.url responses.map do |res| res[2].to_s.include?(current_url) end.include?(true) end
redirect_info(request, responses)
click to toggle source
@param request [Rack::Request] Request env. @param responses [Array] Mapped redirect response information. @return [Array] Return response corresponded request.
# File lib/rack/joint.rb, line 52 def redirect_info(request, responses) current_url = request.url responses.select do |res| res[2].to_s.include?(current_url) end.to_a.flatten(1) end
valid_mapping(mappings, host)
click to toggle source
@param mappings [Array] URI mappings for redirecting. @param host [String] Requested hostname(env). @return [Array] Return URL mapped responses.
# File lib/rack/joint.rb, line 34 def valid_mapping(mappings, host) return [] unless mappings mappings.select { |res| res[host] }.first.values.flatten(1) end