mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* MANIFEST: add sample/webrick/* git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require "pp"
 | 
						|
 | 
						|
module DemoApplication
 | 
						|
  def initialize(config, enctype)
 | 
						|
    super
 | 
						|
    @enctype = enctype
 | 
						|
  end
 | 
						|
 | 
						|
  def do_GET(req, res)
 | 
						|
    if req.path_info != "/"
 | 
						|
      res.set_redirect(WEBrick::HTTPStatus::Found, req.script_name + "/")
 | 
						|
    end
 | 
						|
    res.body =<<-_end_of_html_
 | 
						|
      <HTML>
 | 
						|
       <FORM method="POST" enctype=#{@enctype}>
 | 
						|
        text: <INPUT type="text" name="text"><BR>
 | 
						|
        file: <INPUT type="file" name="file"><BR>
 | 
						|
        check:
 | 
						|
        <INPUT type="checkbox" name="check" value="a">a,
 | 
						|
        <INPUT type="checkbox" name="check" value="b">b,
 | 
						|
        <INPUT type="checkbox" name="check" value="c">c,
 | 
						|
        <BR>
 | 
						|
        <INPUT type="submit">
 | 
						|
       </FORM>
 | 
						|
      </HTML>
 | 
						|
    _end_of_html_
 | 
						|
    res['content-type'] = 'text/html; charset=iso-8859-1'
 | 
						|
  end
 | 
						|
 | 
						|
  def do_POST(req, res)
 | 
						|
    if req["content-length"].to_i > 1024*10
 | 
						|
      raise WEBrick::HTTPStatus::Forbidden, "file size too large"
 | 
						|
    end
 | 
						|
    res.body =<<-_end_of_html_
 | 
						|
      <HTML>
 | 
						|
       <H2>Query Parameters</H2>
 | 
						|
       #{display_query(req.query)}
 | 
						|
       <A href="#{req.path}">return</A>
 | 
						|
       <H2>Request</H2>
 | 
						|
       <PRE>#{WEBrick::HTMLUtils::escape(PP::pp(req, "", 80))}</PRE>
 | 
						|
       <H2>Response</H2>
 | 
						|
       <PRE>#{WEBrick::HTMLUtils::escape(PP::pp(res, "", 80))}</PRE>
 | 
						|
      </HTML>
 | 
						|
    _end_of_html_
 | 
						|
    res['content-type'] = 'text/html; charset=iso-8859-1'
 | 
						|
  end
 | 
						|
 | 
						|
  private
 | 
						|
 | 
						|
  def display_query(q)
 | 
						|
    ret = ""
 | 
						|
    q.each{|key, val|
 | 
						|
      ret << "<H3>#{WEBrick::HTMLUtils::escape(key)}</H3>"
 | 
						|
      ret << "<TABLE border=1>"
 | 
						|
      ret << make_tr("val", val.inspect)
 | 
						|
      ret << make_tr("val.to_a", val.to_a.inspect)
 | 
						|
      ret << make_tr("val.to_ary", val.to_ary.inspect)
 | 
						|
      ret << "</TABLE>"
 | 
						|
    }
 | 
						|
    ret
 | 
						|
  end
 | 
						|
 | 
						|
  def make_tr(arg0, arg1)
 | 
						|
    "<TR><TD>#{arg0}</TD><TD>#{WEBrick::HTMLUtils::escape(arg1)}</TD></TR>"
 | 
						|
  end
 | 
						|
end
 |