1#!ruby -d
2require "webrick/cgi"
3
4class TestApp < WEBrick::CGI
5  def do_GET(req, res)
6    res["content-type"] = "text/plain"
7    if (p = req.path_info) && p.length > 0
8      res.body = p
9    elsif (q = req.query).size > 0
10      res.body = q.keys.sort.collect{|key|
11        q[key].list.sort.collect{|v|
12          "#{key}=#{v}"
13        }.join(", ")
14      }.join(", ")
15    elsif %r{/$} =~ req.request_uri.to_s
16      res.body = ""
17      res.body << req.request_uri.to_s  << "\n"
18      res.body << req.script_name
19    elsif !req.cookies.empty?
20      res.body = req.cookies.inject(""){|result, cookie|
21        result << "%s=%s\n" % [cookie.name, cookie.value]
22      }
23      res.cookies << WEBrick::Cookie.new("Customer", "WILE_E_COYOTE")
24      res.cookies << WEBrick::Cookie.new("Shipping", "FedEx")
25    else
26      res.body = req.script_name
27    end
28  end
29
30  def do_POST(req, res)
31    do_GET(req, res)
32  end
33end
34
35cgi = TestApp.new
36cgi.start
37