File: diary.rb

package info (click to toggle)
ruby-samuel 0.3.3-1.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, trixie
  • size: 172 kB
  • sloc: ruby: 735; makefile: 2
file content (32 lines) | stat: -rw-r--r-- 1,013 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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