diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-26 01:12:54 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-26 01:12:54 +0000 |
commit | 28afe277a8e543da0e6353bdacbcad0b69739e06 (patch) | |
tree | 1591c370f08ab4db6c888eea99f2936262e137ca /lib/webrick/cgi.rb | |
parent | 89232d1dd97251b6fc626d4338c49e9e8c4f6535 (diff) | |
download | ruby-28afe277a8e543da0e6353bdacbcad0b69739e06.tar.gz |
* lib/webrick/accesslog.rb: Improved WEBrick documentation.
* lib/webrick/cgi.rb: ditto.
* lib/webrick/config.rb: ditto.
* lib/webrick/cookie.rb: ditto.
* lib/webrick/httpauth/authenticator.rb: ditto.
* lib/webrick/httpauth/basicauth.rb: ditto.
* lib/webrick/httpauth/digestauth.rb: ditto.
* lib/webrick/httpproxy.rb: ditto.
* lib/webrick/httprequest.rb: ditto.
* lib/webrick/httpresponse.rb: ditto.
* lib/webrick/https.rb: ditto.
* lib/webrick/httpserver.rb: ditto.
* lib/webrick/httpservlet/cgihandler.rb: ditto.
* lib/webrick/httpservlet/filehandler.rb: ditto.
* lib/webrick/httpservlet/prochandler.rb: ditto.
* lib/webrick/httputils.rb: ditto.
* lib/webrick/httpversion.rb: ditto.
* lib/webrick/log.rb: ditto.
* lib/webrick/server.rb: ditto.
* lib/webrick/ssl.rb: ditto.
* lib/webrick/utils.rb: ditto.
* lib/webrick/version.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/webrick/cgi.rb')
-rw-r--r-- | lib/webrick/cgi.rb | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/lib/webrick/cgi.rb b/lib/webrick/cgi.rb index 806d050bc9..80f636edc3 100644 --- a/lib/webrick/cgi.rb +++ b/lib/webrick/cgi.rb @@ -13,10 +13,44 @@ require "webrick/config" require "stringio" module WEBrick + + # A CGI library using WEBrick requests and responses. + # + # Example: + # + # class MyCGI < WEBrick::CGI + # def do_GET req, res + # res.body = 'it worked!' + # res.status = 200 + # end + # end + # + # MyCGI.new.start + class CGI + + # The CGI error exception class + CGIError = Class.new(StandardError) - attr_reader :config, :logger + ## + # The CGI configuration. This is based on WEBrick::Config::HTTP + + attr_reader :config + + ## + # The CGI logger + + attr_reader :logger + + ## + # Creates a new CGI interface. + # + # The first argument in +args+ is a configuration hash which would update + # WEBrick::Config::HTTP. + # + # Any remaining arguments are stored in the <code>@options</code> instance + # variable for use by a subclass. def initialize(*args) if defined?(MOD_RUBY) @@ -41,10 +75,17 @@ module WEBrick @options = args end + ## + # Reads +key+ from the configuration + def [](key) @config[key] end + ## + # Starts the CGI process with the given environment +env+ and standard + # input and output +stdin+ and +stdout+. + def start(env=ENV, stdin=$stdin, stdout=$stdout) sock = WEBrick::CGI::Socket.new(@config, env, stdin, stdout) req = HTTPRequest.new(@config) @@ -108,6 +149,10 @@ module WEBrick end end + ## + # Services the request +req+ which will fill in the response +res+. See + # WEBrick::HTTPServlet::AbstractServlet#service for details. + def service(req, res) method_name = "do_" + req.request_method.gsub(/-/, "_") if respond_to?(method_name) @@ -118,7 +163,10 @@ module WEBrick end end - class Socket + ## + # Provides HTTP socket emulation from the CGI environment + + class Socket # :nodoc: include Enumerable private |