class SiteHub::Request

Attributes

env[R]
mapped_path[R]
mapped_url[R]
rack_request[R]
time[R]

Public Class Methods

new(env:) click to toggle source
# File lib/sitehub/request.rb, line 20
def initialize(env:)
  @rack_request = Rack::Request.new(env)
  @env = HttpHeaders.from_rack_env(env)
  @time = Time.now
end

Public Instance Methods

body() click to toggle source
# File lib/sitehub/request.rb, line 35
def body
  rack_request.body.read
end
headers() click to toggle source
# File lib/sitehub/request.rb, line 39
def headers
  @env.tap do |headers|
    headers[X_FORWARDED_FOR_HEADER] = x_forwarded_for

    headers[X_FORWARDED_HOST_HEADER] = x_forwarded_host

    headers[HOST_HEADER] = if mapped?
                             mapped_uri = URI(mapped_url)
                             "#{mapped_uri.host}:#{mapped_uri.port}"
                           end
  end
end
http_version() click to toggle source
# File lib/sitehub/request.rb, line 68
def http_version
  rack_env[RackHttpHeaderKeys::HTTP_VERSION]
end
map(path, url) click to toggle source
# File lib/sitehub/request.rb, line 26
def map(path, url)
  @mapped_path = path
  @mapped_url = url
end
mapped?() click to toggle source
# File lib/sitehub/request.rb, line 56
def mapped?
  mapped_path.is_a?(String)
end
mapping() click to toggle source
# File lib/sitehub/request.rb, line 52
def mapping
  RequestMapping.new(source_url: rack_request.url, mapped_url: mapped_url.to_s, mapped_path: mapped_path)
end
remote_user() click to toggle source
# File lib/sitehub/request.rb, line 60
def remote_user
  rack_request.env[RackHttpHeaderKeys::REMOTE_USER]
end
request_method() click to toggle source
# File lib/sitehub/request.rb, line 31
def request_method
  rack_request.request_method.downcase.to_sym
end
source_address() click to toggle source
# File lib/sitehub/request.rb, line 72
def source_address
  rack_env[RackHttpHeaderKeys::X_FORWARDED_FOR] || rack_env[RackHttpHeaderKeys::REMOTE_ADDR]
end
transaction_id() click to toggle source
# File lib/sitehub/request.rb, line 64
def transaction_id
  env[HttpHeaderKeys::TRANSACTION_ID]
end
uri() click to toggle source
# File lib/sitehub/request.rb, line 76
def uri
  mapping.computed_uri
end

Private Instance Methods

rack_env() click to toggle source
# File lib/sitehub/request.rb, line 84
def rack_env
  rack_request.env
end
remote_address() click to toggle source
# File lib/sitehub/request.rb, line 88
def remote_address
  rack_request.env[RackHttpHeaderKeys::REMOTE_ADDRESS_ENV_KEY]
end
x_forwarded_for() click to toggle source
# File lib/sitehub/request.rb, line 98
def x_forwarded_for
  StringUtils.split(env[HttpHeaderKeys::X_FORWARDED_FOR_HEADER]).push(remote_address).join(COMMA)
end
x_forwarded_host() click to toggle source
# File lib/sitehub/request.rb, line 92
def x_forwarded_host
  StringUtils.split(env[HttpHeaderKeys::X_FORWARDED_HOST_HEADER])
             .push(env[HttpHeaderKeys::HOST_HEADER])
             .join(COMMA)
end