module Honeybadger::Util::RequestHash
Constructs a request hash from a Rack::Request matching the /v1/notices API specification.
Constants
- CGI_WHITELIST
- HTTP_HEADER_PREFIX
Public Class Methods
extract_cgi_data(request)
click to toggle source
# File lib/honeybadger/util/request_hash.rb, line 64 def self.extract_cgi_data(request) request.env.each_with_object({}) do |(k,v), env| next unless k.is_a?(String) next unless k.start_with?(HTTP_HEADER_PREFIX) || CGI_WHITELIST.include?(k) env[k] = v end end
extract_params(request)
click to toggle source
# File lib/honeybadger/util/request_hash.rb, line 49 def self.extract_params(request) (request.env['action_dispatch.request.parameters'] || request.params).to_hash || {} rescue => e { error: "Failed to access params -- #{e}" } end
extract_session(request)
click to toggle source
# File lib/honeybadger/util/request_hash.rb, line 55 def self.extract_session(request) request.session.to_hash rescue => e # Rails raises ArgumentError when `config.secret_token` is missing, and # ActionDispatch::Session::SessionRestoreError when the session can't be # restored. { error: "Failed to access session data -- #{e}" } end
extract_url(request)
click to toggle source
# File lib/honeybadger/util/request_hash.rb, line 43 def self.extract_url(request) request.env['honeybadger.request.url'] || request.url rescue => e "Failed to access URL -- #{e}" end
from_env(env)
click to toggle source
# File lib/honeybadger/util/request_hash.rb, line 27 def self.from_env(env) return {} unless defined?(::Rack::Request) return {} unless env hash, request = {}, ::Rack::Request.new(env) hash[:url] = extract_url(request) hash[:params] = extract_params(request) hash[:component] = hash[:params]['controller'] hash[:action] = hash[:params]['action'] hash[:session] = extract_session(request) hash[:cgi_data] = extract_cgi_data(request) hash end