class Rack::PactBroker::SetBaseUrl
Constants
- X_FORWARDED_PATTERN
Attributes
app[R]
base_urls[R]
Public Class Methods
new(app, base_urls)
click to toggle source
# File lib/rack/pact_broker/set_base_url.rb, line 6 def initialize app, base_urls @app = app @base_urls = base_urls end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/pact_broker/set_base_url.rb, line 11 def call(env) if env["pactbroker.base_url"] app.call(env) else app.call(env.merge("pactbroker.base_url" => select_matching_base_url(env))) end end
Private Instance Methods
default_base_url()
click to toggle source
# File lib/rack/pact_broker/set_base_url.rb, line 32 def default_base_url base_urls.first end
matching_base_url(env)
click to toggle source
# File lib/rack/pact_broker/set_base_url.rb, line 44 def matching_base_url(env) request_base_url = Rack::Request.new(env).base_url if base_urls.include?(request_base_url) request_base_url end end
matching_base_url_considering_x_forwarded_headers(env)
click to toggle source
# File lib/rack/pact_broker/set_base_url.rb, line 36 def matching_base_url_considering_x_forwarded_headers(env) matching_base_url(env) end
matching_base_url_not_considering_x_forwarded_headers(env)
click to toggle source
# File lib/rack/pact_broker/set_base_url.rb, line 40 def matching_base_url_not_considering_x_forwarded_headers(env) matching_base_url(env.reject{ |k, _| k =~ X_FORWARDED_PATTERN} ) end
select_matching_base_url(env)
click to toggle source
# File lib/rack/pact_broker/set_base_url.rb, line 23 def select_matching_base_url(env) if base_urls.size > 1 return matching_base_url_considering_x_forwarded_headers(env) || matching_base_url_not_considering_x_forwarded_headers(env) || default_base_url end default_base_url end