ruby-web 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. data/ChangeLog +474 -0
  2. data/INSTALL.txt +9 -0
  3. data/InstalledFiles +180 -0
  4. data/LICENSE.txt +74 -0
  5. data/Rakefile +529 -0
  6. data/TODO +65 -0
  7. data/doc/additional.xml +149 -0
  8. data/doc/core.xml +652 -0
  9. data/doc/credits/index.xml +52 -0
  10. data/doc/credits/php.contributors.xml +118 -0
  11. data/doc/credits/php.language-snippets.ent +622 -0
  12. data/doc/install/index.xml +136 -0
  13. data/doc/install/mac/index.xml +21 -0
  14. data/doc/install/ruby-web.install.rb.instructions.xml +7 -0
  15. data/doc/install/unix/index.xml +46 -0
  16. data/doc/install/win/apache1.xml +166 -0
  17. data/doc/install/win/apache2.xml +141 -0
  18. data/doc/install/win/iis.xml +162 -0
  19. data/doc/install/win/index.xml +24 -0
  20. data/doc/install/win/installer.xml +31 -0
  21. data/doc/install/win/manual.xml +43 -0
  22. data/doc/manual.xml +69 -0
  23. data/doc/old/apache_cgi.txt +23 -0
  24. data/doc/old/fastcgi.txt +23 -0
  25. data/doc/old/mod_ruby.txt +21 -0
  26. data/doc/old/snippets.rdoc +183 -0
  27. data/doc/old/webrick.txt +23 -0
  28. data/doc/old/windows_cgi.txt +9 -0
  29. data/doc/tutorial.xml +14 -0
  30. data/doc/xsl/manual-multi.xsl +10 -0
  31. data/doc/xsl/manual-pdf.xsl +6 -0
  32. data/doc/xsl/manual-single.xsl +6 -0
  33. data/doc/xsl/manual.css +22 -0
  34. data/install.rb +1022 -0
  35. data/lib/formatter.rb +314 -0
  36. data/lib/html-parser.rb +429 -0
  37. data/lib/htmlrepair.rb +113 -0
  38. data/lib/htmlsplit.rb +842 -0
  39. data/lib/sgml-parser.rb +332 -0
  40. data/lib/web.rb +68 -0
  41. data/lib/web/assertinclude.rb +129 -0
  42. data/lib/web/config.rb +50 -0
  43. data/lib/web/connection.rb +1070 -0
  44. data/lib/web/convenience.rb +154 -0
  45. data/lib/web/formreader.rb +318 -0
  46. data/lib/web/htmlparser/html-parser.rb +429 -0
  47. data/lib/web/htmlparser/sgml-parser.rb +332 -0
  48. data/lib/web/htmltools/element.rb +296 -0
  49. data/lib/web/htmltools/stparser.rb +276 -0
  50. data/lib/web/htmltools/tags.rb +286 -0
  51. data/lib/web/htmltools/tree.rb +139 -0
  52. data/lib/web/htmltools/xmltree.rb +160 -0
  53. data/lib/web/htmltools/xpath.rb +71 -0
  54. data/lib/web/info.rb +63 -0
  55. data/lib/web/load.rb +210 -0
  56. data/lib/web/mime.rb +87 -0
  57. data/lib/web/phprb.rb +340 -0
  58. data/lib/web/resources/test/cookie.rb +33 -0
  59. data/lib/web/resources/test/counter.rb +20 -0
  60. data/lib/web/resources/test/multipart.rb +14 -0
  61. data/lib/web/resources/test/redirect.rb +8 -0
  62. data/lib/web/resources/test/stock.rb +33 -0
  63. data/lib/web/sapi/apache.rb +129 -0
  64. data/lib/web/sapi/fastcgi.rb +22 -0
  65. data/lib/web/sapi/install/apache.rb +180 -0
  66. data/lib/web/sapi/install/iis.rb +93 -0
  67. data/lib/web/sapi/install/macosx.rb +90 -0
  68. data/lib/web/sapi/webrick.rb +86 -0
  69. data/lib/web/session.rb +83 -0
  70. data/lib/web/shim/cgi.rb +129 -0
  71. data/lib/web/shim/rails.rb +175 -0
  72. data/lib/web/stringio.rb +78 -0
  73. data/lib/web/strscanparser.rb +24 -0
  74. data/lib/web/tagparser.rb +96 -0
  75. data/lib/web/testing.rb +666 -0
  76. data/lib/web/traceoutput.rb +75 -0
  77. data/lib/web/unit.rb +56 -0
  78. data/lib/web/upload.rb +59 -0
  79. data/lib/web/validate.rb +52 -0
  80. data/lib/web/wiki.rb +557 -0
  81. data/lib/web/wiki/linker.rb +72 -0
  82. data/lib/web/wiki/page.rb +201 -0
  83. data/lib/webunit.rb +27 -0
  84. data/lib/webunit/assert.rb +152 -0
  85. data/lib/webunit/converter.rb +154 -0
  86. data/lib/webunit/cookie.rb +118 -0
  87. data/lib/webunit/domwalker.rb +185 -0
  88. data/lib/webunit/exception.rb +14 -0
  89. data/lib/webunit/form.rb +116 -0
  90. data/lib/webunit/frame.rb +37 -0
  91. data/lib/webunit/htmlelem.rb +122 -0
  92. data/lib/webunit/image.rb +26 -0
  93. data/lib/webunit/jscript.rb +31 -0
  94. data/lib/webunit/link.rb +33 -0
  95. data/lib/webunit/params.rb +321 -0
  96. data/lib/webunit/parser.rb +229 -0
  97. data/lib/webunit/response.rb +464 -0
  98. data/lib/webunit/runtest.rb +41 -0
  99. data/lib/webunit/table.rb +148 -0
  100. data/lib/webunit/testcase.rb +45 -0
  101. data/lib/webunit/ui/cui/testrunner.rb +50 -0
  102. data/lib/webunit/utils.rb +68 -0
  103. data/lib/webunit/webunit.rb +28 -0
  104. data/test/dev/action.rb +83 -0
  105. data/test/dev/forms.rb +104 -0
  106. data/test/dev/forms2.rb +104 -0
  107. data/test/dev/parser.rb +17 -0
  108. data/test/dev/scripts/dump.rb +24 -0
  109. data/test/dev/scripts/makedist.rb +62 -0
  110. data/test/dev/scripts/uri.rb +41 -0
  111. data/test/dev/scripts/uri/common.rb +432 -0
  112. data/test/dev/scripts/uri/ftp.rb +149 -0
  113. data/test/dev/scripts/uri/generic.rb +1106 -0
  114. data/test/dev/scripts/uri/http.rb +76 -0
  115. data/test/dev/scripts/uri/https.rb +26 -0
  116. data/test/dev/scripts/uri/ldap.rb +238 -0
  117. data/test/dev/scripts/uri/mailto.rb +260 -0
  118. data/test/dev/scripts/urireg.rb +174 -0
  119. data/test/dev/simpledispatcher.rb +156 -0
  120. data/test/dev/test.action.rb +146 -0
  121. data/test/dev/test.formreader.rb +463 -0
  122. data/test/dev/test.simpledispatcher.rb +186 -0
  123. data/test/dev/webunit/conv/digit-0.rb +21 -0
  124. data/test/dev/webunit/conv/digit-1.rb +17 -0
  125. data/test/dev/webunit/conv/digit.rb +23 -0
  126. data/test/dev/webunit/conv/test_digit-0.rb +16 -0
  127. data/test/dev/webunit/conv/test_digit-1.rb +19 -0
  128. data/test/dev/webunit/conv/test_digit.rb +26 -0
  129. data/test/dev/webunit/conv/test_digit_view-0.rb +76 -0
  130. data/test/dev/webunit/conv/test_digit_view-1.rb +102 -0
  131. data/test/dev/webunit/conv/test_digit_view.rb +134 -0
  132. data/test/installation/htdocs/cgi_test.rb +296 -0
  133. data/test/installation/htdocs/test_install.rb +4 -0
  134. data/test/installation/runwebtest.rb +5 -0
  135. data/test/installation/test_cookie.rb +128 -0
  136. data/test/installation/test_form.rb +47 -0
  137. data/test/installation/test_multipart.rb +51 -0
  138. data/test/installation/test_request.rb +24 -0
  139. data/test/installation/test_response.rb +35 -0
  140. data/test/unit/htdocs/cookie.rb +32 -0
  141. data/test/unit/htdocs/multipart.rb +28 -0
  142. data/test/unit/htdocs/redirect.rb +12 -0
  143. data/test/unit/htdocs/simple.rb +13 -0
  144. data/test/unit/htdocs/stock.rb +33 -0
  145. data/test/unit/test_assert.rb +162 -0
  146. data/test/unit/test_cookie.rb +114 -0
  147. data/test/unit/test_domwalker.rb +77 -0
  148. data/test/unit/test_form.rb +42 -0
  149. data/test/unit/test_frame.rb +40 -0
  150. data/test/unit/test_htmlelem.rb +74 -0
  151. data/test/unit/test_image.rb +45 -0
  152. data/test/unit/test_jscript.rb +57 -0
  153. data/test/unit/test_link.rb +85 -0
  154. data/test/unit/test_multipart.rb +51 -0
  155. data/test/unit/test_params.rb +210 -0
  156. data/test/unit/test_parser.rb +53 -0
  157. data/test/unit/test_response.rb +150 -0
  158. data/test/unit/test_table.rb +70 -0
  159. data/test/unit/test_utils.rb +106 -0
  160. data/test/unit/test_webunit.rb +28 -0
  161. data/test/web/mod_ruby_stub.rb +39 -0
  162. data/test/web/test.assertinclude.rb +109 -0
  163. data/test/web/test.buffer.rb +182 -0
  164. data/test/web/test.code.loader.rb +78 -0
  165. data/test/web/test.config.rb +31 -0
  166. data/test/web/test.error.handling.rb +91 -0
  167. data/test/web/test.formreader-2.0.rb +352 -0
  168. data/test/web/test.load.rb +125 -0
  169. data/test/web/test.mime-type.rb +23 -0
  170. data/test/web/test.narf.cgi.rb +106 -0
  171. data/test/web/test.phprb.rb +239 -0
  172. data/test/web/test.request.rb +368 -0
  173. data/test/web/test.response.rb +637 -0
  174. data/test/web/test.ruby-web.rb +10 -0
  175. data/test/web/test.session.rb +50 -0
  176. data/test/web/test.shim.cgi.rb +96 -0
  177. data/test/web/test.tagparser.rb +65 -0
  178. data/test/web/test.template2.rb +297 -0
  179. data/test/web/test.testing2.rb +318 -0
  180. data/test/web/test.upload.rb +45 -0
  181. data/test/web/test.validate.rb +46 -0
  182. data/test/web/test.web.test.rb +495 -0
  183. data/test/wiki/test.history.rb +297 -0
  184. data/test/wiki/test.illustration_page.rb +287 -0
  185. data/test/wiki/test.linker.rb +197 -0
  186. data/test/wiki/test.tarpit.rb +56 -0
  187. data/test/wiki/test.wiki.rb +300 -0
  188. data/test/wikitestroot/admin.rb +7 -0
  189. data/test/wikitestroot/wiki.rb +6 -0
  190. metadata +234 -0
@@ -0,0 +1,93 @@
1
+ require 'pp'
2
+
3
+ module Web
4
+ module Install
5
+ class IIS
6
+
7
+ def IIS::install( install_dir )
8
+ self.new(install_dir).install
9
+ end
10
+
11
+ attr_accessor :install_dir
12
+ def initialize( install_dir )
13
+ @install_dir = install_dir
14
+ end
15
+
16
+ def backup
17
+ "#{httpd_conf}.ruby-web.backup.#{Time::now::strftime('%Y.%m.%d') }"
18
+ end
19
+
20
+ def install
21
+ puts "******************************************",
22
+ "* Installing .rhtml and .rb mappings *",
23
+ "* for Microsoft IIS *",
24
+ "******************************************"
25
+
26
+ done = Hash.new
27
+ require 'win32ole'
28
+ # http://www.west-wind.com/presentations/WebServerConfig/WebServerConfig.htm
29
+ iis = WIN32OLE.connect 'IIS://LOCALHOST/W3SVC'
30
+
31
+ iis.each do |site|
32
+ unless site.name =~ /info|filters/i
33
+ site.each do |d|
34
+ if d.name =~ /^root$/i
35
+ scriptmaps = d.scriptmaps
36
+
37
+ scriptmaps.each_with_index do |mapping, i|
38
+ m = mapping.split(/,/)
39
+ if m.first =~ /^\.(rb|rhtml)$/
40
+ done[m.first] = true
41
+ m[1] = install_dir + "\\bin\\ruby-web.exe"
42
+ m = m.join(',')
43
+ scriptmaps[i] = m
44
+ end
45
+ end
46
+
47
+ ['.rb', '.rhtml'].each do |ext|
48
+ unless done[ext]
49
+ scriptmaps[scriptmaps.length] = "#{ext},#{install_dir}\\bin\\ruby-web.exe,1"
50
+ end
51
+ end
52
+
53
+ # http://www.microsoft.com/technet/scriptcenter/guide/sas_ads_kbwl.mspx
54
+ d.PutEx( ADS_PROPERTY_UPDATE, "ScriptMaps", scriptmaps )
55
+
56
+ index_files = d.DefaultDoc
57
+ index_files += ",index.rhtml" unless index_files =~ /index\.rhtml/
58
+ index_files += ",index.rb" unless index_files =~ /index\.rb/
59
+ d.DefaultDoc = index_files
60
+
61
+ d.SetInfo()
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ #require 'pp'
68
+ #pp iis.scriptmaps
69
+
70
+ puts "Restarting IIS..."
71
+ unless system('iisreset')
72
+ raise "Error restarting IIS"
73
+ end
74
+ end
75
+
76
+ ADS_PROPERTY_CLEAR = 1
77
+ ADS_PROPERTY_UPDATE = 2
78
+ ADS_PROPERTY_APPEND = 3
79
+ ADS_PROPERTY_DELETE = 4
80
+
81
+ end
82
+ end
83
+ end
84
+
85
+ if __FILE__ == $0
86
+ begin
87
+ Web::Install::IIS::install( *ARGV )
88
+ rescue Exception
89
+ puts $!
90
+ puts $!.backtrace
91
+ sleep
92
+ end
93
+ end
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/ruby
2
+
3
+ configtest = "/usr/sbin/apachectl configtest"
4
+ conffile = "/etc/httpd/httpd.conf"
5
+ backupfile = "#{conffile}.ruby-web.backup.#{Time::now}"
6
+ tempfile = "#{conffile}.ruby-web.temp"
7
+
8
+ cgi_conf = <<-CONF
9
+ # begin ruby-web activation
10
+ AddHandler cgi-script .rb .rhtml
11
+ # end ruby-web activation
12
+ CONF
13
+
14
+ mod_ruby_conf = <<-CONF
15
+ # begin ruby-web activation
16
+ LoadModule ruby_module libexec/httpd/mod_ruby.so
17
+ AddModule mod_ruby.c
18
+
19
+ <IfModule mod_ruby.c>
20
+ RubySafeLevel 0
21
+ RubyRequire web/sapi/apache
22
+
23
+ AddHandler ruby-object rb rhtml
24
+ RubyHandler Web::RubyRun.instance
25
+ </IfModule>
26
+ # end ruby-web activation
27
+ CONF
28
+
29
+ if (ARGV[0] == "mod_ruby")
30
+ conf = mod_ruby_conf
31
+ elsif (ARGV[0] == "cgi")
32
+ conf = cgi_conf
33
+ else
34
+ puts <<-EOF
35
+ Usage:
36
+ ruby #{__FILE__} [mod_ruby|cgi]
37
+
38
+ Options:
39
+ mod_ruby install mod_ruby config
40
+ cgi install cgi config
41
+
42
+ Description:
43
+ Configures default Apache installation
44
+ on Mac OS X to use ruby-web. Assumes
45
+ ruby-web files have already been installed
46
+ by the ruby-web_x.x.x.pkg.
47
+
48
+ EOF
49
+ exit
50
+ end
51
+
52
+ require 'fileutils'
53
+ include FileUtils
54
+
55
+
56
+ # ----------- Modify config file ------------
57
+
58
+ # backup config
59
+ cp( conffile, backupfile )
60
+
61
+ contents = File::open(conffile) do |f|
62
+ f.read
63
+ end
64
+
65
+ config_file_changed = false
66
+
67
+ # delete any existing ruby-web config
68
+ contents.gsub!( /# begin ruby-web activation.*# end ruby-web activation\s*/m, '' )
69
+
70
+ contents << "\n\n" << conf
71
+
72
+ File.open(tempfile, "w") do |f|
73
+ f.write contents
74
+ end
75
+
76
+ cp( tempfile, conffile )
77
+
78
+ config_file_changed = true
79
+
80
+ # ----------- Restart Apache ------------
81
+ unless system(configtest)
82
+ if config_file_changed
83
+ puts("[ruby-web #{$0}]: Unable that the Apache webserver is running correcly with the new module and the configuration fiel changes using the '#{configtest}' command. Ruby-Web itself has been installed sucessfully, but it has not been activated. Your old #{conffile} file is untouched...")
84
+ puts "[ruby-web #{$0}]: The modified config file is available in '#{tempfile}' so you can examine it and try to activate Ruby-Web"
85
+
86
+ cp( backupfile, conffile )
87
+ else
88
+ puts "[ruby-web #{$0}]: Unable that the Apache webserver is running correcly with the new module and the configuration fiel changes using the '#{configtest}' command. Ruby-Web itself has been installed sucessfully, but you need to figure out why Apache is not running. Your conf file has not been modified."
89
+ end
90
+ end
@@ -0,0 +1,86 @@
1
+ # Based on:
2
+ # cgihandler.rb -- CGIHandler Class
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
6
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
7
+ # reserved.
8
+ #
9
+ # $IPR: cgihandler.rb,v 1.27 2003/03/21 19:56:01 gotoyuzo Exp $
10
+
11
+ require 'tempfile'
12
+ require 'webrick/httpservlet/abstract'
13
+
14
+ require 'web'
15
+
16
+ module Web
17
+
18
+ class WebrickConnection < Connection
19
+ def send_header_implementation
20
+ res = options[:webrick_response]
21
+ res.status = Web::status.to_i
22
+ Web::header.each do |key, val|
23
+ unless key =~ /status/i
24
+ res[key] = val.join(", ")
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ class RubyWebHandler < WEBrick::HTTPServlet::AbstractServlet
31
+
32
+ def initialize(server, name)
33
+ super
34
+ @script_filename = name
35
+ @tempdir = server[:TempDir]
36
+ end
37
+
38
+ def do_GET(req, res)
39
+ #cgi_out = Tempfile.new("webrick.cgiout.", @tempdir)
40
+ #cgi_err = Tempfile.new("webrick.cgierr.", @tempdir)
41
+ cgi_out = StringIO.new ''
42
+ cgi_err = StringIO.new ''
43
+
44
+ old_stderr = $stderr
45
+
46
+ begin
47
+ $stderr = cgi_err
48
+
49
+ meta = req.meta_vars
50
+ meta["SCRIPT_FILENAME"] = @script_filename
51
+ meta["PATH"] = @config[:CGIPathEnv]
52
+
53
+ Web::open( :connection =>
54
+ WebrickConnection.new(:webrick_response => res,
55
+ :out => cgi_out,
56
+ :raw_post_data =>
57
+ StringIO.new( req.body || '' ),
58
+ :env => meta ) ) do
59
+ Web::load( @script_filename )
60
+ end
61
+
62
+ cgi_out.rewind
63
+ res.body = cgi_out.read
64
+
65
+ cgi_err.rewind
66
+ if errmsg = cgi_err.read
67
+ if errmsg.size > 0
68
+ @logger.error("RubyWebHandler: #{@script_filename}:\n" + errmsg)
69
+ end
70
+ end
71
+
72
+ rescue Exception => ex
73
+ #Web::report_error( ex )
74
+ old_stderr.puts ex.backtrace
75
+ raise HTTPStatus::InternalServerError, ex.message
76
+
77
+ ensure
78
+ cgi_out.close
79
+ cgi_err.close
80
+ $stderr = old_stderr
81
+ end
82
+ end
83
+ alias do_POST do_GET
84
+ end
85
+
86
+ end
@@ -0,0 +1,83 @@
1
+ require 'digest/md5'
2
+ module Web
3
+ # == Purpose
4
+ # Provides a file based implemetation of a session.
5
+ # This is hacked up from matz's CGI::Session
6
+ class Session
7
+
8
+
9
+ class << self
10
+ def create_id
11
+ md5 = Digest::MD5.new
12
+ md5.update( String(Time.now.to_f) )
13
+ md5.update( String(rand(0)) )
14
+ #md5.update( String($$) )
15
+ #md5.update( 'thanks matz' )
16
+ md5.hexdigest[0,16]
17
+ end
18
+ end
19
+
20
+ def initialize( cgi, options={} )
21
+ @session_id = load_id( cgi, options )
22
+
23
+ send_cookie( cgi, options[:session_key] || "_session_id" )
24
+
25
+ @session = get_session_from_disk
26
+ end
27
+
28
+ def get_session_from_disk
29
+ if File.exists? file
30
+ File.open( file, "r" ) { |store|
31
+ Marshal.load store
32
+ }
33
+ else
34
+ {}
35
+ end
36
+ end
37
+
38
+ def load_id( cgi, options )
39
+ if (options.has_key? :session_id)
40
+ options[:session_id]
41
+ elsif(cgi.cookie["_session_id"] && !cgi.cookie["_session_id"].empty?)
42
+ cgi.cookie["_session_id"][0]
43
+ else
44
+ Session.create_id
45
+ end
46
+ end
47
+
48
+
49
+ def send_cookie( cgi, session_key )
50
+ cgi.set_cookie( session_key, @session_id )
51
+ end
52
+
53
+
54
+ # saves session to disk
55
+ def save
56
+ File.open( file, "w+" ) { |store|
57
+ Marshal.dump( @session, store )
58
+ }
59
+ end
60
+
61
+ def temp_dir
62
+ temp = ENV['TMP'] || ENV['TEMP'] || '/tmp'
63
+ unless( File.exists? temp )
64
+ temp = "c:/windows/temp"
65
+ end
66
+ temp
67
+ end
68
+
69
+ def file
70
+ File.expand_path(File.join(self.temp_dir, File.basename(@session_id.to_s).untaint))
71
+ end
72
+
73
+ # resets session to empty hash, for use in testing
74
+ def reset
75
+ @session = {}
76
+ end
77
+
78
+ def method_missing(method, *args, &block)
79
+ # much faster than simple delegator
80
+ @session.send(method,*args,&block)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,129 @@
1
+ # shim for old style CGI functionality
2
+
3
+ require 'cgi'
4
+
5
+ class CGI
6
+ class << self
7
+ [:escape,
8
+ :unescape,
9
+ :escapeHTML,
10
+ :unescapeHTML,
11
+ :escapeElement,
12
+ :unescapeElement, ].each do |sym|
13
+ define_method(sym) do |*args|
14
+ Web::send( sym, *args )
15
+ end
16
+ end
17
+ end
18
+
19
+ remove_method :initialize
20
+ def initialize(type = "query")
21
+ case type
22
+ when "html3"
23
+ extend Html3
24
+ element_init()
25
+ extend HtmlExtension
26
+ when "html4"
27
+ extend Html4
28
+ element_init()
29
+ extend HtmlExtension
30
+ when "html4Tr"
31
+ extend Html4Tr
32
+ element_init()
33
+ extend HtmlExtension
34
+ when "html4Fr"
35
+ extend Html4Tr
36
+ element_init()
37
+ extend Html4Fr
38
+ element_init()
39
+ extend HtmlExtension
40
+ end
41
+
42
+ Web::filter do |content|
43
+ while content.gsub!( /^(.+): (.+)/, '' )
44
+ if ($1.downcase == "location")
45
+ Web::set_redirect($2)
46
+ else
47
+ Web::add_header( $1, $2 )
48
+ end
49
+ end
50
+ content
51
+ end
52
+ end
53
+
54
+ def [] key
55
+ Web[key]
56
+ end
57
+
58
+ # params has slightly different logic than Web::request
59
+ def params
60
+ @params ||= nil
61
+ unless @params
62
+ @params = Hash.new
63
+ Web::request.each do |k,v|
64
+ @params[k] ||= Array.new
65
+ v.each do |v1|
66
+ if (Web::multipart?)
67
+ @params[k].push( if v1.kind_of? Web::Upload
68
+ v1
69
+ else
70
+ t = Tempfile.new("Web")
71
+ t.write(v1)
72
+ Web::Upload.new(t, nil, nil)
73
+ end )
74
+ else
75
+ @params[k].push v1
76
+ end
77
+ end
78
+ end
79
+ end
80
+ @params
81
+ end
82
+
83
+ remove_method :env_table
84
+ def env_table
85
+ Web::env
86
+ end
87
+
88
+ def cookies
89
+ unless @cookies
90
+ @cookies = Web::cookie
91
+ @cookies.each do |k,v|
92
+ @cookies[k] = CGI::Cookie::new( k, v )
93
+ end
94
+ end
95
+ @cookies
96
+ end
97
+
98
+ def script_name
99
+ Web::script_name
100
+ end
101
+
102
+ def query_string
103
+ Web::env[:query_string]
104
+ end
105
+
106
+ def has_key?(key)
107
+ self.params.has_key?(key)
108
+ end
109
+
110
+ def key?(key)
111
+ self.params.has_key?(key)
112
+ end
113
+
114
+ def keys
115
+ self.params.keys
116
+ end
117
+
118
+ remove_method :out
119
+ def out(headers=Array.new)
120
+ headers.each do |k,v|
121
+ k = "Set-Cookie" if (k.downcase == "cookie")
122
+ v.each do |v1|
123
+ Web::add_header(k,v1)
124
+ end
125
+ end
126
+ Web << yield
127
+ end
128
+
129
+ end