Sha256: e5cb5031e4ad9da53fa1a2a7dd5aa98699da501f26bb9335a97709230598b079

Contents?: true

Size: 1.98 KB

Versions: 21

Compression:

Stored size: 1.98 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

require 'new_relic/agent/http_clients/abstract_request'

module NewRelic
  module Agent
    module HTTPClients
      class ExconHTTPResponse
        def initialize(response)
          @response = response
          # Since HTTP headers are case-insensitive, we normalize all of them to
          # upper case here, and then also in our [](key) implementation.
          @normalized_headers = {}
          headers = response.respond_to?(:headers) ? response.headers : response[:headers]
          (headers || {}).each do |key, val|
            @normalized_headers[key.upcase] = val
          end
        end

        def [](key)
          @normalized_headers[key.upcase]
        end

        def to_hash
          @normalized_headers.dup
        end
      end

      class ExconHTTPRequest < AbstractRequest
        attr_reader :method

        EXCON = "Excon".freeze
        LHOST = 'host'.freeze
        UHOST = 'Host'.freeze
        COLON = ':'.freeze

        def initialize(datum)
          @datum = datum

          @method = @datum[:method].to_s.upcase
          @scheme = @datum[:scheme]
          @port   = @datum[:port]
          @path   = @datum[:path]
        end

        def type
          EXCON
        end

        def host_from_header
          headers = @datum[:headers]
          if hostname = (headers[LHOST] || headers[UHOST])
            hostname.split(COLON).first
          end
        end

        def host
          host_from_header || @datum[:host]
        end

        def [](key)
          @datum[:headers][key]
        end

        def []=(key, value)
          @datum[:headers] ||= {}
          @datum[:headers][key] = value
        end

        def uri
          ::NewRelic::Agent::HTTPClients::URIUtil.parse_and_normalize_url(
            "#{@scheme}://#{host}:#{@port}#{@path}"
            )
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
newrelic_rpm-6.9.0.363 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.8.0.360 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.7.0.359 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.6.0.358 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.5.0.357 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.4.0.356 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.3.0.355 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.2.0.354 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.1.0.352 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-6.0.0.351 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-5.7.0.350 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-5.6.0.349 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-5.5.0.348 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-5.4.0.347 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-5.3.0.346 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-5.2.0.345 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-5.1.0.344 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-5.0.0.342 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-4.8.0.341 lib/new_relic/agent/http_clients/excon_wrappers.rb
newrelic_rpm-4.7.1.340 lib/new_relic/agent/http_clients/excon_wrappers.rb