Sha256: 9a206d7b1d3950ac00297ce02310b8b73b01ebacaeabcb61c5f1e14495b29e6f

Contents?: true

Size: 1.8 KB

Versions: 4

Compression:

Stored size: 1.8 KB

Contents

# frozen_string_literal: true

module Sniffer
  module Adapters
    # Excon adapter
    module ExconAdapter
      def self.included(base)
        base.class_eval do
          alias_method :request_without_sniffer, :request
          alias_method :request, :request_with_sniffer
        end
      end

      # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
      def request_with_sniffer(params = {}, &block)
        if Sniffer.enabled?
          datum = data.merge(params)
          data_item = Sniffer::DataItem.new
          data_item.request = Sniffer::DataItem::Request.new(host: datum[:host],
                                                             method: datum[:method],
                                                             query: datum[:path] + ::Excon::Utils.query_string(datum),
                                                             headers: datum[:headers] || {},
                                                             body: datum[:body].to_s,
                                                             port: datum[:port])

          Sniffer.store(data_item)
        end

        bm = Benchmark.realtime do
          @response = request_without_sniffer(params, &block)
        end

        if Sniffer.enabled?
          data_item.response = Sniffer::DataItem::Response.new(status: @response.status,
                                                               headers: @response.headers,
                                                               body: @response.body,
                                                               timing: bm)

          data_item.log
        end

        @response
      end
      # rubocop:enable Metrics/AbcSize,Metrics/MethodLength
    end
  end
end

::Excon::Connection.send(:include, Sniffer::Adapters::ExconAdapter) if defined?(::Excon::Connection)

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sniffer-0.3.2 lib/sniffer/adapters/excon_adapter.rb
sniffer-0.3.1 lib/sniffer/adapters/excon_adapter.rb
sniffer-0.3.0 lib/sniffer/adapters/excon_adapter.rb
sniffer-0.2.0 lib/sniffer/adapters/excon_adapter.rb