Skip to content

Instantly share code, notes, and snippets.

@dalizard
Forked from dathanb/http_debug.rb
Created February 15, 2024 12:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dalizard/8cc0da7d3a7b8e5d937e6bcc1fca2668 to your computer and use it in GitHub Desktop.
Save dalizard/8cc0da7d3a7b8e5d937e6bcc1fca2668 to your computer and use it in GitHub Desktop.
Print Raw HTTP Request and Response Payload in Ruby
module Net
class HTTP
alias_method(:orig_request, :request) unless method_defined?(:orig_request)
def request(req, body = nil, &block)
puts '===== REQUEST ====='
puts "Request: #{req.method} http://#{@address}:#{@port}#{req.path}"
puts 'Request headers: '
req.each_header do |key, value|
puts "\t#{key}: #{value}"
end
if req.method == 'POST'
data = req.body.nil? || req.body.size == 0 ? body : req.body
puts "POST Data: #{data}"
end
response = orig_request(req, body, &block)
puts '===== RESPONSE ====='
puts "Code: #{response.code}"
puts 'Headers'
response.each_header do |header, values|
puts "\t#{header}: #{values.inspect}"
end
puts "Body: #{response.body}"
response
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment