module Sniffer::Adapters::EthonAdapter::Operations
overrides perform method
Public Class Methods
included(base)
click to toggle source
# File lib/sniffer/adapters/ethon_adapter.rb, line 38 def self.included(base) base.class_eval do alias_method :perform_without_sniffer, :perform alias_method :perform, :perform_with_sniffer end end
Public Instance Methods
perform_with_sniffer()
click to toggle source
rubocop:disable Metrics/AbcSize,Metrics/MethodLength
# File lib/sniffer/adapters/ethon_adapter.rb, line 46 def perform_with_sniffer bm = Benchmark.realtime do @return_code = Ethon::Curl.easy_perform(handle) end if Sniffer.enabled? uri = URI("http://" + @url) query = uri.path query += "?#{uri.query}" if uri.query @data_item.request.query = query status = @response_headers.scan(%r{HTTP\/... (\d{3})}).flatten[0].to_i hash_headers = @response_headers .split(/\r?\n/)[1..-1] .each_with_object({}) do |item, res| k, v = item.split(": ") res[k] = v end @data_item.response = Sniffer::DataItem::Response.new(status: status, headers: hash_headers, body: @response_body, timing: bm) Sniffer.notify_response(@data_item) end Ethon.logger.debug { "ETHON: performed #{log_inspect}" } if Ethon.logger.debug? complete @return_code end