class RailsRequest::Payload

Public Class Methods

new(payload) click to toggle source
# File lib/rails_request/payload.rb, line 5
def initialize(payload)
  @payload = payload
end

Public Instance Methods

curl_options() click to toggle source
# File lib/rails_request/payload.rb, line 9
def curl_options
  query = params.present? ? "?#{params.to_query}" : nil
  # host and port set during request by before_action
  host = RailsRequest.host
  port = RailsRequest.port
  [
    'curl',
    '-v',
    "--request '#{method}'",
    headers.map { |key, value| "--header '#{key}: #{value}'" },
    "'http://#{host}:#{port}#{path}#{query}'"
  ].flatten.join(" \\\n")
end
method() click to toggle source
# File lib/rails_request/payload.rb, line 27
def method
  @payload[:method]
end
path() click to toggle source
# File lib/rails_request/payload.rb, line 23
def path
  @payload[:path]
end

Private Instance Methods

headers() click to toggle source
# File lib/rails_request/payload.rb, line 33
def headers
  return [] if @payload[:headers].nil?

  @payload[:headers]
    .select { |key, *_| key.start_with?('HTTP') }
    .map do |key, value|
      segments = key.downcase.split('_')
      segments.shift
      reformatted = segments.map(&:capitalize).join('-')
      [reformatted, value]
    end
end
params() click to toggle source
# File lib/rails_request/payload.rb, line 46
def params
  Hash[@payload[:params].reject do |key, _|
    %w[action controller path].include?(key)
  end]
end