Sha256: 855be78cc7cf0b6142f338407a287ad3e81ced9b0d2a2aeef375d9e4ed983e58

Contents?: true

Size: 1.07 KB

Versions: 7

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module Airbrake
  module Rack
    # Adds HTTP request parameters.
    #
    # @since v5.7.0
    class HttpHeadersFilter
      # @return [Array<String>] the prefixes of the majority of HTTP headers in
      #   Rack (some prefixes match the header names for simplicity)
      HTTP_HEADER_PREFIXES = [
        'HTTP_'.freeze,
        'CONTENT_TYPE'.freeze,
        'CONTENT_LENGTH'.freeze,
      ].freeze

      # @return [Integer]
      attr_reader :weight

      def initialize
        @weight = 98
      end

      # @see Airbrake::FilterChain#refine
      def call(notice)
        return unless (request = notice.stash[:rack_request])

        http_headers = request.env.map.with_object({}) do |(key, value), headers|
          if HTTP_HEADER_PREFIXES.any? { |prefix| key.to_s.start_with?(prefix) }
            headers[key] = value
          end

          headers
        end

        notice[:context].merge!(
          httpMethod: request.request_method,
          referer: request.referer,
          headers: http_headers,
        )
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
airbrake-10.0.6 lib/airbrake/rack/http_headers_filter.rb
airbrake-10.1.0.rc.1 lib/airbrake/rack/http_headers_filter.rb
airbrake-10.0.5 lib/airbrake/rack/http_headers_filter.rb
airbrake-10.0.4 lib/airbrake/rack/http_headers_filter.rb
airbrake-10.0.3 lib/airbrake/rack/http_headers_filter.rb
airbrake-10.0.2 lib/airbrake/rack/http_headers_filter.rb
airbrake-10.0.1 lib/airbrake/rack/http_headers_filter.rb