class Rack::PactBroker::SetBaseUrl
Constants
- X_FORWARDED_PATTERN
Attributes
Public Class Methods
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
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
Source
# File lib/rack/pact_broker/set_base_url.rb, line 32 def default_base_url base_urls.first end
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
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
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
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