class Umbra::Encoder

Public Class Methods

call(env) click to toggle source
# File lib/umbra/encoder.rb, line 5
def self.call(env)
  new(env).call
end
new(env) click to toggle source
# File lib/umbra/encoder.rb, line 9
def initialize(env)
  @env = env
end

Public Instance Methods

call() click to toggle source
# File lib/umbra/encoder.rb, line 13
def call
  @call ||= Pb::Message.new(
    method: rack_request.request_method,
    url: rack_request.url,
    body: request_body,
    headers: request_headers
  ).to_proto
end
ignored_headers() click to toggle source
# File lib/umbra/encoder.rb, line 22
def ignored_headers
  []
end

Private Instance Methods

rack_request() click to toggle source
# File lib/umbra/encoder.rb, line 28
def rack_request
  @rack_request ||= Rack::Request.new(@env)
end
request_body() click to toggle source
# File lib/umbra/encoder.rb, line 44
def request_body
  @env.fetch("umbra.request_body")
end
request_headers() click to toggle source
# File lib/umbra/encoder.rb, line 32
def request_headers
  @request_headers ||=
    @env
      .select { |k, _| k.start_with?("HTTP_") && !ignored_headers.include?(k) }
      .merge(HEADER_KEY => HEADER_VALUE)
      .transform_keys { |k| to_http_header(k) }
end
to_http_header(rack_header) click to toggle source
# File lib/umbra/encoder.rb, line 40
def to_http_header(rack_header)
  rack_header.delete_prefix("HTTP_").downcase.split("_").join("-")
end