Sha256: 79dfa7eb8daf573efb84bb715735388973cfac7abe129c7cf076cf0c5c49d297
Contents?: true
Size: 1.82 KB
Versions: 5
Compression:
Stored size: 1.82 KB
Contents
module Excon class Socket def connect_with_logging host = @data[:proxy] ? @data[:proxy][:host] : @data[:host] port = @data[:proxy] ? @data[:proxy][:port] : @data[:port] HttpEventLogger::Event::Connection.new(host, port) connect_without_logging end alias_method_chain :connect, :logging end class Connection def request_with_logging(params, &block) request_datum = @data.merge(params) request_datum[:headers] = @data[:headers].merge(request_datum[:headers] || {}) request_event = create_request_event(request_datum) result = nil time_taken_in_seconds = ::Benchmark.realtime do result = request_without_logging(params, &block) end response = result.is_a?(Excon::Response) ? result : Excon::Response.new(response(result)[:response]) create_response_event(request_event, time_taken_in_seconds, response) result end alias_method_chain :request, :logging private def create_request_event(datum) HttpEventLogger::Event::Request.new( method: method_from(datum), uri: absolute_url_from(datum), headers: datum[:headers], body: datum[:body] ) end def method_from(datum) datum[:method] ? datum[:method].to_s.upcase : "UNKNOWN" end def absolute_url_from(datum) "#{datum[:scheme]}://#{datum[:host]}:#{datum[:port]}#{datum[:path]}#{datum[:query]}" end def create_response_event(request_event, time_taken_in_seconds, response) HttpEventLogger::Event::Response.new( request: request_event, time_taken_in_seconds: time_taken_in_seconds, status: response.status, headers: response.headers, body: response.body ) end end end if defined?(Excon)
Version data entries
5 entries across 5 versions & 1 rubygems