class Aws::Xray::Request

Public Class Methods

build(method:, url:, user_agent: nil, client_ip: nil, x_forwarded_for: nil, traced: nil) click to toggle source
# File lib/aws/xray/request.rb, line 9
def build(method:, url:, user_agent: nil, client_ip: nil, x_forwarded_for: nil, traced: nil)
  new(encode(method), drop_params(encode(url)), encode(user_agent), encode(client_ip), x_forwarded_for, traced)
end
build_from_faraday_env(env, traced: false) click to toggle source
# File lib/aws/xray/request.rb, line 25
def build_from_faraday_env(env, traced: false)
  build(
    method: env.method.to_s.upcase,
    url: env.url.to_s,
    user_agent: env.request_headers['User-Agent'],
    client_ip: nil,
    x_forwarded_for: nil,
    traced: traced,
  )
end
build_from_rack_env(env) click to toggle source
# File lib/aws/xray/request.rb, line 13
def build_from_rack_env(env)
  req = ::Rack::Request.new(env)
  build(
    method: req.request_method,
    url: req.url,
    user_agent: req.user_agent,
    client_ip: req.ip,
    x_forwarded_for: !!env['HTTP_X_FORWARDED_FOR'],
    traced: nil,
  )
end

Private Class Methods

drop_params(str) click to toggle source
# File lib/aws/xray/request.rb, line 49
def drop_params(str)
  uri = URI.parse(str)
  uri.query = nil
  uri.fragment = nil
  uri.to_s
rescue URI::InvalidURIError
  str
end
encode(str) click to toggle source

Ensure all strings have same encoding to JSONify them. If the given string has illegal bytes or a undefined byte sequence, replace them with a default character.

# File lib/aws/xray/request.rb, line 41
def encode(str)
  if str.nil?
    nil
  else
    str.to_s.encode(__ENCODING__, invalid: :replace, undef: :replace, replace: '')
  end
end

Public Instance Methods

to_h() click to toggle source
Calls superclass method
# File lib/aws/xray/request.rb, line 59
def to_h
  super.delete_if {|_, v| v.nil? }
end