Sha256: 24c7cbbd3fe252d86634629857e30d935f9aac6b8d9b35a7a573a269deb0d014

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

module Ethon

  class Easy

    module Http

      def http_request_with_logging(url, action_name, options={})
        create_request_event(url, action_name, options)
        http_request_without_logging(url, action_name, options)
      end

      alias_method_chain :http_request, :logging

      private

      def create_request_event(url, action_name, options)
        @request_event = HttpEventLogger::Event::Request.new(
          method:  action_name,
          uri:     url,
          headers: options[:headers],
          body:    options[:body]
        )
      end

    end

    module Operations

      def perform_with_logging
        result = nil
        time_taken_in_seconds = ::Benchmark.realtime do
          result = perform_without_logging
        end
        create_response_event(time_taken_in_seconds)
        result
      end

      alias_method_chain :perform, :logging

      private

      def create_response_event(time_taken_in_seconds)
        HttpEventLogger::Event::Response.new(
          request:               @request_event,
          time_taken_in_seconds: time_taken_in_seconds,
          status:                response_code,
          headers:               response_headers,
          body:                  response_body
        )
      end

    end

  end

end if defined?(Ethon)

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
http_event_logger-0.1.0 ./lib/http_event_logger/adapter/ethon.rb
http_event_logger-0.1.0.rc4 ./lib/http_event_logger/adapter/ethon.rb
http_event_logger-0.1.0.rc3 ./lib/http_event_logger/adapter/ethon.rb
http_event_logger-0.1.0.rc2 ./lib/http_event_logger/adapter/ethon.rb
http_event_logger-0.1.0.rc1 ./lib/http_event_logger/adapter/ethon.rb