mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-08-10 00:01:27 -04:00
removed label parameter from logs, in order to avoid needless string allocations by default
This commit is contained in:
parent
90a4c9a980
commit
a78f7afac6
@ -132,7 +132,7 @@ module HTTPX
|
||||
def handle_stream(stream, request)
|
||||
stream.on(:close, &method(:on_stream_close).curry[stream, request])
|
||||
stream.on(:half_close) do
|
||||
log(level: 2, label: "#{stream.id}: ") { "waiting for response..." }
|
||||
log(level: 2) { "#{stream.id}: waiting for response..." }
|
||||
end
|
||||
stream.on(:altsvc, &method(:on_altsvc).curry[request.origin])
|
||||
stream.on(:headers, &method(:on_stream_headers).curry[stream, request])
|
||||
@ -147,8 +147,8 @@ module HTTPX
|
||||
headers[":path"] = headline_uri(request)
|
||||
headers[":authority"] = request.authority
|
||||
headers = headers.merge(request.headers)
|
||||
log(level: 1, label: "#{stream.id}: ", color: :yellow) do
|
||||
headers.map { |k, v| "-> HEADER: #{k}: #{v}" }.join("\n")
|
||||
log(level: 1, color: :yellow) do
|
||||
headers.map { |k, v| "#{stream.id}: -> HEADER: #{k}: #{v}" }.join("\n")
|
||||
end
|
||||
stream.headers(headers, end_stream: request.empty?)
|
||||
end
|
||||
@ -159,8 +159,8 @@ module HTTPX
|
||||
chunk = @drains.delete(request) || request.drain_body
|
||||
while chunk
|
||||
next_chunk = request.drain_body
|
||||
log(level: 1, label: "#{stream.id}: ", color: :green) { "-> DATA: #{chunk.bytesize} bytes..." }
|
||||
log(level: 2, label: "#{stream.id}: ", color: :green) { "-> #{chunk.inspect}" }
|
||||
log(level: 1, color: :green) { "#{stream.id}: -> DATA: #{chunk.bytesize} bytes..." }
|
||||
log(level: 2, color: :green) { "#{stream.id}: -> #{chunk.inspect}" }
|
||||
stream.data(chunk, end_stream: !next_chunk)
|
||||
if next_chunk && @buffer.full?
|
||||
@drains[request] = next_chunk
|
||||
@ -175,8 +175,8 @@ module HTTPX
|
||||
######
|
||||
|
||||
def on_stream_headers(stream, request, h)
|
||||
log(label: "#{stream.id}:", color: :yellow) do
|
||||
h.map { |k, v| "<- HEADER: #{k}: #{v}" }.join("\n")
|
||||
log(color: :yellow) do
|
||||
h.map { |k, v| "#{stream.id}: <- HEADER: #{k}: #{v}" }.join("\n")
|
||||
end
|
||||
_, status = h.shift
|
||||
headers = request.options.headers_class.new(h)
|
||||
@ -186,8 +186,8 @@ module HTTPX
|
||||
end
|
||||
|
||||
def on_stream_data(stream, request, data)
|
||||
log(level: 1, label: "#{stream.id}: ", color: :green) { "<- DATA: #{data.bytesize} bytes..." }
|
||||
log(level: 2, label: "#{stream.id}: ", color: :green) { "<- #{data.inspect}" }
|
||||
log(level: 1, color: :green) { "#{stream.id}: <- DATA: #{data.bytesize} bytes..." }
|
||||
log(level: 2, color: :green) { "#{stream.id}: <- #{data.inspect}" }
|
||||
request.response << data
|
||||
end
|
||||
|
||||
@ -208,7 +208,7 @@ module HTTPX
|
||||
emit(:response, request, response)
|
||||
end
|
||||
end
|
||||
log(level: 2, label: "#{stream.id}: ") { "closing stream" }
|
||||
log(level: 2) { "#{stream.id}: closing stream" }
|
||||
|
||||
@streams.delete(request)
|
||||
send(@pending.shift) unless @pending.empty?
|
||||
@ -246,32 +246,26 @@ module HTTPX
|
||||
end
|
||||
|
||||
def on_frame_sent(frame)
|
||||
log(level: 2, label: "#{frame[:stream]}: ") { "frame was sent!" }
|
||||
log(level: 2, label: "#{frame[:stream]}: ", color: :blue) do
|
||||
case frame[:type]
|
||||
when :data
|
||||
frame.merge(payload: frame[:payload].bytesize).inspect
|
||||
else
|
||||
frame.inspect
|
||||
end
|
||||
log(level: 2) { "#{frame[:stream]}: frame was sent!" }
|
||||
log(level: 2, color: :blue) do
|
||||
payload = frame
|
||||
payload = payload.merge(payload: frame[:payload].bytesize) if frame[:type] == :data
|
||||
"#{frame[:stream]}: #{payload}"
|
||||
end
|
||||
end
|
||||
|
||||
def on_frame_received(frame)
|
||||
log(level: 2, label: "#{frame[:stream]}: ") { "frame was received!" }
|
||||
log(level: 2, label: "#{frame[:stream]}: ", color: :magenta) do
|
||||
case frame[:type]
|
||||
when :data
|
||||
frame.merge(payload: frame[:payload].bytesize).inspect
|
||||
else
|
||||
frame.inspect
|
||||
end
|
||||
log(level: 2) { "#{frame[:stream]}: frame was received!" }
|
||||
log(level: 2, color: :magenta) do
|
||||
payload = frame
|
||||
payload = payload.merge(payload: frame[:payload].bytesize) if frame[:type] == :data
|
||||
"#{frame[:stream]}: #{payload}"
|
||||
end
|
||||
end
|
||||
|
||||
def on_altsvc(origin, frame)
|
||||
log(level: 2, label: "#{frame[:stream]}: ") { "altsvc frame was received" }
|
||||
log(level: 2, label: "#{frame[:stream]}: ") { frame.inspect }
|
||||
log(level: 2) { "#{frame[:stream]}: altsvc frame was received" }
|
||||
log(level: 2) { "#{frame[:stream]}: #{frame.inspect}" }
|
||||
alt_origin = URI.parse("#{frame[:proto]}://#{frame[:host]}:#{frame[:port]}")
|
||||
params = { "ma" => frame[:max_age] }
|
||||
emit(:altsvc, origin, alt_origin, origin, params)
|
||||
|
@ -13,35 +13,35 @@ module HTTPX
|
||||
white: 37,
|
||||
}.freeze
|
||||
|
||||
def log(level: @options.debug_level, label: "", color: nil, &msg)
|
||||
def log(level: @options.debug_level, color: nil, &msg)
|
||||
return unless @options.debug
|
||||
return unless @options.debug_level >= level
|
||||
|
||||
debug_stream = @options.debug
|
||||
|
||||
message = (+label << msg.call << "\n")
|
||||
message = (+"" << msg.call << "\n")
|
||||
message = "\e[#{COLORS[color]}m#{message}\e[0m" if debug_stream.respond_to?(:isatty) && debug_stream.isatty
|
||||
debug_stream << message
|
||||
end
|
||||
|
||||
if !Exception.instance_methods.include?(:full_message)
|
||||
|
||||
def log_exception(ex, level: @options.debug_level, label: "", color: nil)
|
||||
def log_exception(ex, level: @options.debug_level, color: nil)
|
||||
return unless @options.debug
|
||||
return unless @options.debug_level >= level
|
||||
|
||||
message = +"#{ex.message} (#{ex.class})"
|
||||
message << "\n" << ex.backtrace.join("\n") unless ex.backtrace.nil?
|
||||
log(level: level, label: label, color: color) { message }
|
||||
log(level: level, color: color) { message }
|
||||
end
|
||||
|
||||
else
|
||||
|
||||
def log_exception(ex, level: @options.debug_level, label: "", color: nil)
|
||||
def log_exception(ex, level: @options.debug_level, color: nil)
|
||||
return unless @options.debug
|
||||
return unless @options.debug_level >= level
|
||||
|
||||
log(level: level, label: label, color: color) { ex.full_message }
|
||||
log(level: level, color: color) { ex.full_message }
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -39,7 +39,7 @@ module HTTPX
|
||||
|
||||
@parser = nil
|
||||
end
|
||||
log(level: 1, label: "SOCKS4: ") { "#{nextstate}: #{@write_buffer.to_s.inspect}" } unless nextstate == :open
|
||||
log(level: 1) { "SOCKS4: #{nextstate}: #{@write_buffer.to_s.inspect}" } unless nextstate == :open
|
||||
super
|
||||
end
|
||||
|
||||
|
@ -60,7 +60,7 @@ module HTTPX
|
||||
|
||||
@parser = nil
|
||||
end
|
||||
log(level: 1, label: "SOCKS5: ") { "#{nextstate}: #{@write_buffer.to_s.inspect}" } unless nextstate == :open
|
||||
log(level: 1) { "SOCKS5: #{nextstate}: #{@write_buffer.to_s.inspect}" } unless nextstate == :open
|
||||
super
|
||||
end
|
||||
|
||||
|
@ -43,9 +43,9 @@ module HTTPX
|
||||
end
|
||||
|
||||
def __on_promise_request(parser, stream, h)
|
||||
log(level: 1, label: "#{stream.id}: ") do
|
||||
log(level: 1) do
|
||||
# :nocov:
|
||||
h.map { |k, v| "-> PROMISE HEADER: #{k}: #{v}" }.join("\n")
|
||||
h.map { |k, v| "#{stream.id}: -> PROMISE HEADER: #{k}: #{v}" }.join("\n")
|
||||
# :nocov:
|
||||
end
|
||||
headers = @options.headers_class.new(h)
|
||||
|
@ -84,7 +84,7 @@ module HTTPX
|
||||
|
||||
hostname = hostname || @queries.key(connection) || connection.origin.host
|
||||
type = @_record_types[hostname].first
|
||||
log(label: "resolver: ") { "query #{type} for #{hostname}" }
|
||||
log { "resolver: query #{type} for #{hostname}" }
|
||||
begin
|
||||
request = build_request(hostname, type)
|
||||
@requests[request] = connection
|
||||
@ -111,7 +111,7 @@ module HTTPX
|
||||
end
|
||||
|
||||
def on_promise(_, stream)
|
||||
log(level: 2, label: "#{stream.id}: ") { "refusing stream!" }
|
||||
log(level: 2) { "#{stream.id}: refusing stream!" }
|
||||
stream.refuse
|
||||
end
|
||||
|
||||
|
@ -93,11 +93,7 @@ module HTTPX
|
||||
rescue Errno::EHOSTUNREACH => e
|
||||
@ns_index += 1
|
||||
if @ns_index < @nameserver.size
|
||||
log(label: "resolver: ") do
|
||||
# :nocov:
|
||||
"failed resolving on nameserver #{@nameserver[@ns_index - 1]} (#{e.message})"
|
||||
# :nocov:
|
||||
end
|
||||
log { "resolver: failed resolving on nameserver #{@nameserver[@ns_index - 1]} (#{e.message})" }
|
||||
transition(:idle)
|
||||
else
|
||||
handle_error(e)
|
||||
@ -160,11 +156,7 @@ module HTTPX
|
||||
raise NativeResolveError.new(connection, host)
|
||||
else
|
||||
connections << connection
|
||||
log(label: "resolver: ") do
|
||||
# :nocov:
|
||||
"timeout after #{prev_timeout}s, retry(#{timeouts.first}) #{host}..."
|
||||
# :nocov:
|
||||
end
|
||||
log { "resolver: timeout after #{prev_timeout}s, retry(#{timeouts.first}) #{host}..." }
|
||||
end
|
||||
end
|
||||
@queries = queries
|
||||
@ -180,7 +172,7 @@ module HTTPX
|
||||
end
|
||||
return if siz.zero?
|
||||
|
||||
log(label: "resolver: ") { "READ: #{siz} bytes..." }
|
||||
log { "resolver: READ: #{siz} bytes..." }
|
||||
parse(@read_buffer)
|
||||
end
|
||||
end
|
||||
@ -194,7 +186,7 @@ module HTTPX
|
||||
emit(:close)
|
||||
return
|
||||
end
|
||||
log(label: "resolver: ") { "WRITE: #{siz} bytes..." }
|
||||
log { "resolver: WRITE: #{siz} bytes..." }
|
||||
return if siz.zero?
|
||||
end
|
||||
end
|
||||
@ -253,7 +245,7 @@ module HTTPX
|
||||
hostname = hostname || @queries.key(connection) || connection.origin.host
|
||||
@queries[hostname] = connection
|
||||
type = @_record_types[hostname].first
|
||||
log(label: "resolver: ") { "query #{type} for #{hostname}" }
|
||||
log { "resolver: query #{type} for #{hostname}" }
|
||||
begin
|
||||
@write_buffer << Resolver.encode_dns_query(hostname, type: RECORD_TYPES[type])
|
||||
rescue Resolv::DNS::EncodeError => e
|
||||
@ -269,7 +261,7 @@ module HTTPX
|
||||
uri = URI::Generic.build(scheme: "udp", port: port)
|
||||
uri.hostname = ip
|
||||
type = IO.registry(uri.scheme)
|
||||
log(label: "resolver: ") { "server: #{uri}..." }
|
||||
log { "resolver: server: #{uri}..." }
|
||||
@io = type.new(uri, [IPAddr.new(ip)], @options)
|
||||
end
|
||||
|
||||
|
@ -30,7 +30,7 @@ module HTTPX
|
||||
addresses.map! do |address|
|
||||
address.is_a?(IPAddr) ? address : IPAddr.new(address.to_s)
|
||||
end
|
||||
log(label: "resolver: ") { "answer #{connection.origin.host}: #{addresses.inspect}" }
|
||||
log { "resolver: answer #{connection.origin.host}: #{addresses.inspect}" }
|
||||
connection.addresses = addresses
|
||||
catch(:coalesced) { emit(:resolve, connection) }
|
||||
end
|
||||
|
@ -47,7 +47,7 @@ module HTTPX
|
||||
end
|
||||
|
||||
def on_promise(_, stream)
|
||||
log(level: 2, label: "#{stream.id}: ") { "refusing stream!" }
|
||||
log(level: 2) { "#{stream.id}: refusing stream!" }
|
||||
stream.refuse
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user