http: add logger for debugging purposes.
Usage: Danbooru::Http.new.use(:logger).get(url).
This commit is contained in:
@@ -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"
|
||||
|
||||
35
app/logical/danbooru/http/logger.rb
Normal file
35
app/logical/danbooru/http/logger.rb
Normal 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
|
||||
Reference in New Issue
Block a user