lib/honeybadger/util/request_hash.rb in honeybadger-5.2.0 vs lib/honeybadger/util/request_hash.rb in honeybadger-5.2.1
- old
+ new
@@ -1,73 +1,73 @@
-require 'set'
-
-module Honeybadger
- module Util
- # Constructs a request hash from a Rack::Request matching the /v1/notices
- # API specification.
- module RequestHash
- HTTP_HEADER_PREFIX = 'HTTP_'.freeze
-
- CGI_WHITELIST = %w(
- AUTH_TYPE
- CONTENT_LENGTH
- CONTENT_TYPE
- GATEWAY_INTERFACE
- HTTPS
- REMOTE_ADDR
- REMOTE_HOST
- REMOTE_IDENT
- REMOTE_USER
- REQUEST_METHOD
- SERVER_NAME
- SERVER_PORT
- SERVER_PROTOCOL
- SERVER_SOFTWARE
- ).freeze
-
- def self.from_env(env)
- return {} unless defined?(::Rack::Request)
- return {} unless env
-
- hash, request = {}, ::Rack::Request.new(env.dup)
-
- 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
-
- def self.extract_url(request)
- request.env['honeybadger.request.url'] || request.url
- rescue => e
- "Failed to access URL -- #{e}"
- end
-
- def self.extract_params(request)
- (request.env['action_dispatch.request.parameters'] || request.params).to_hash || {}
- rescue => e
- { error: "Failed to access params -- #{e}" }
- end
-
- 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
-
- 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
- end
- end
-end
+require 'set'
+
+module Honeybadger
+ module Util
+ # Constructs a request hash from a Rack::Request matching the /v1/notices
+ # API specification.
+ module RequestHash
+ HTTP_HEADER_PREFIX = 'HTTP_'.freeze
+
+ CGI_WHITELIST = %w(
+ AUTH_TYPE
+ CONTENT_LENGTH
+ CONTENT_TYPE
+ GATEWAY_INTERFACE
+ HTTPS
+ REMOTE_ADDR
+ REMOTE_HOST
+ REMOTE_IDENT
+ REMOTE_USER
+ REQUEST_METHOD
+ SERVER_NAME
+ SERVER_PORT
+ SERVER_PROTOCOL
+ SERVER_SOFTWARE
+ ).freeze
+
+ def self.from_env(env)
+ return {} unless defined?(::Rack::Request)
+ return {} unless env
+
+ hash, request = {}, ::Rack::Request.new(env.dup)
+
+ 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
+
+ def self.extract_url(request)
+ request.env['honeybadger.request.url'] || request.url
+ rescue => e
+ "Failed to access URL -- #{e}"
+ end
+
+ def self.extract_params(request)
+ (request.env['action_dispatch.request.parameters'] || request.params).to_hash || {}
+ rescue => e
+ { error: "Failed to access params -- #{e}" }
+ end
+
+ 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
+
+ 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
+ end
+ end
+end