http: add logger for debugging purposes.

Usage: Danbooru::Http.new.use(:logger).get(url).
This commit is contained in:
evazion
2020-08-12 11:24:46 -05:00
parent 0297b631fb
commit 5917587fd5
2 changed files with 36 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
require "danbooru/http/html_adapter"
require "danbooru/http/xml_adapter"
require "danbooru/http/cache"
require "danbooru/http/logger"
require "danbooru/http/redirector"
require "danbooru/http/retriable"
require "danbooru/http/session"

View File

@@ -0,0 +1,35 @@
module Danbooru
class Http
class Logger < HTTP::Feature
HTTP::Options.register_feature :logger, self
attr_reader :logger
def initialize(logger: ::Logger.new(STDOUT))
@logger = logger
end
def perform(request, &block)
log_request(request)
response = yield request
log_response(request, response)
response
end
def log_request(request)
logger.info do
verb = request.verb.to_s.upcase
headers = request.headers.map { |name, value| "#{name}: #{value}" }.join("\n")
"> #{verb} #{request.uri}\n#{headers}\n"
end
end
def log_response(request, response)
logger.info do
headers = response.headers.map { |name, value| "#{name}: #{value}" }.join("\n")
"< #{response.status.to_i} | #{request.uri}\n#{headers}\n"
end
end
end
end
end