Skip to content

Instantly share code, notes, and snippets.

@moro
Created January 8, 2009 02:06
Show Gist options
  • Save moro/44538 to your computer and use it in GitHub Desktop.
Save moro/44538 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby19
require 'net/http'
require 'webrick/cookie'
require 'cgi'
require 'uri'
Net::HTTP.version_1_1
def space
puts ""
end
def display_header(k, v, n = 16)
puts "#{(k+":").ljust(n).downcase}#{v}"
end
def display_cookie(v)
c = WEBrick::Cookie.parse_set_cookie(v)
if c.name =~ /\A_.+_session\Z/
puts "Rails session cookie.."
display_header(c.name, parse_rails_cookie(c.value).inspect, 32)
else
puts "Cookie.."
display_header(c.name, c.value, 32)
end
end
def parse_rails_cookie(v)
data = CGI.unescape(v.split("--").first).unpack("m*").shift
begin
Marshal.load(data)
rescue Exception => e
if defined? ActionController
raise e
else
require 'rubygems'
require 'actionpack'
require 'action_controller'
retry
end
end
end
def head(uri)
u = URI(uri)
res = Net::HTTP.start(u.host, u.port){|http|
req = Net::HTTP::Head.new(u.request_uri)
http.request(req)
}
display_header("status", res.code)
space
res.each{|k, v| display_header(k,v) unless k.upcase == "SET-COOKIE" }
space
display_cookie(res["SET-COOKIE"]) if res["SET-COOKIE"]
end
head(ARGV.shift)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment