Sha256: 91905efb5775950e9c63ea253a417631894e0842e57bb30c1d2d248d9c801ff1

Contents?: true

Size: 1013 Bytes

Versions: 1

Compression:

Stored size: 1013 Bytes

Contents

module Samuel
  module Diary
    extend self

    def record_request(http, request, time_requested = current_time)
      @requests ||= []
      @requests.push({:request => request, :time_requested => time_requested})
    end

    def record_response(http, request, response, time_responded = current_time)
      time_requested = @requests.detect { |r| r[:request] == request }[:time_requested]
      @requests.reject! { |r| r[:request] == request }
      log_request_and_response(http, request, response, time_requested, time_responded)
    end

    def current_time
      Time.now
    end

  private

    def log_request_and_response(http, request, response, time_started, time_ended)
      log_entry_class = case http.class.to_s
        when "Net::HTTP"  then LogEntries::NetHttp
        when "HTTPClient" then LogEntries::HttpClient
        else raise NotImplementedError
      end
      log_entry = log_entry_class.new(http, request, response, time_started, time_ended)
      log_entry.log!
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
samuel-0.3.3 lib/samuel/diary.rb