class CGI
See CGI document
Since Ruby 4.0, CGI is a small holder for various escaping methods, included from CGI::Escape
require 'cgi/escape' CGI.escape("Ruby programming language") #=> "Ruby+programming+language" CGI.escapeURIComponent("Ruby programming language") #=> "Ruby%20programming%20language"
See CGI::Escape module for methods list and their description.
Since Ruby 4.0, CGI is a small holder for various escaping methods, included from CGI::Escape
require 'cgi/escape' CGI.escape("Ruby programming language") #=> "Ruby+programming+language" CGI.escapeURIComponent("Ruby programming language") #=> "Ruby%20programming%20language"
See CGI::Escape module for methods list and their description.
Constants
- CR
-
Stringfor carriage return - EOL
-
Standard internet newline sequence
- HTTP_STATUS
-
HTTP status codes.
- LF
-
Stringfor linefeed - MAX_MULTIPART_COUNT
-
Maximum number of request parameters when multipart
- NEEDS_BINMODE
-
Whether processing will be required in binary vs text
- PATH_SEPARATOR
-
Path separators in different environments.
- REVISION
- VERSION
Attributes
encoding
Return the accept character set for this CGI instance.
Public Class Methods
() → encoding
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 114
def self.accept_charset: () -> encoding
Return the accept character set for all new CGI instances.
(encoding accept_charset) → encoding
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 122
def self.accept_charset=: (encoding accept_charset) -> encoding
Set the accept character set for all new CGI instances.
(?String tag_maker) ?{ (String name, String value) → void } → void
(Hash[Symbol, untyped] options_hash) ?{ (String name, String value) → void } → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 105
def initialize: (?String tag_maker) ?{ (String name, String value) -> void } -> void
| (Hash[Symbol, untyped] options_hash) ?{ (String name, String value) -> void } -> void
Create a new CGI instance.
tag_maker-
This is the same as using the
options_hashform with the value{ :tag_maker => tag_maker }Note that it is recommended to use theoptions_hashform, since it also allows you specify the charset you will accept. options_hash-
A
Hashthat recognizes three options:
`:accept_charset`
: specifies encoding of received query string. If omitted, @@accept_charset is used. If the encoding is not valid, a CGI::InvalidEncoding will be raised.
Example. Suppose `@@accept_charset` is "UTF-8"
when not specified:
cgi=CGI.new # @accept_charset # => "UTF-8"
when specified as "EUC-JP":
cgi=CGI.new(:accept_charset => "EUC-JP") # => "EUC-JP"
`:tag_maker`
: String that specifies which version of the HTML generation methods to use. If not specified, no HTML generation methods will be loaded.
The following values are supported: "html3"
: HTML 3.x
"html4"
: HTML 4.0
"html4Tr"
: HTML 4.0 Transitional
"html4Fr"
: HTML 4.0 with Framesets
"html5"
: HTML 5
`:max_multipart_length`
: Specifies maximum length of multipart data. Can be an Integer scalar or a lambda, that will be evaluated when the request is parsed. This allows more complex logic to be set when determining whether to accept multipart data (e.g. consult a registered users upload allowance)
Default is 128 * 1024 * 1024 bytes
cgi=CGI.new(:max_multipart_length => 268435456) # simple scalar
cgi=CGI.new(:max_multipart_length => -> {check_filesystem}) # lambda
block-
If provided, the block is called when an invalid encoding is encountered. For example:
encoding_errors={} cgi=CGI.new(:accept_charset=>"EUC-JP") do |name,value| encoding_errors[name] = value end
Finally, if the CGI object is not created in a standard CGI call environment (that is, it can’t locate REQUEST_METHOD in its environment), then it will run in “offline” mode. In this mode, it reads its parameters from the command line or (failing that) from standard input. Otherwise, cookies and other parameters are parsed automatically from the standard CGI locations, which varies according to the REQUEST_METHOD.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 134
def self.parse: (String query) -> Hash[String, Array[String]]
Parse an HTTP query string into a hash of key=>value pairs.
params = CGI.parse("query_string") # {"name1" => ["value1", "value2", ...], # "name2" => ["value1", "value2", ...], ... }
Public Instance Methods
This method is an alias for http_header, when HTML5 tag maker is inactive.
NOTE: use http_header to create HTTP header blocks, this alias is only provided for backwards compatibility.
Using header with the HTML5 tag maker will create a <header> element.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 293
def http_header: (?String options) -> String
| (?Hash[interned, untyped] header_hash) -> String
Create an HTTP header block as a string.
Includes the empty line that ends the header block.
content_type_string-
If this form is used, this string is the
Content-Type headers_hash-
A
Hashof header values. The following header keys are recognized:
type
: The Content-Type header. Defaults to “text/html”
charset
: The charset of the body, appended to the Content-Type header.
nph
: A boolean value. If true, prepend protocol string and status code, and date; and sets default values for “server” and “connection” if not explicitly set.
status
: The HTTP status code as a String, returned as the Status header. The values are:
OK
: 200 OK
PARTIAL_CONTENT
: 206 Partial Content
MULTIPLE_CHOICES
: 300 Multiple Choices
MOVED
: 301 Moved Permanently
REDIRECT
: 302 Found
NOT_MODIFIED
: 304 Not Modified
BAD_REQUEST
: 400 Bad Request
AUTH_REQUIRED
: 401 Authorization Required
FORBIDDEN
: 403 Forbidden
NOT_FOUND
: 404 Not Found
METHOD_NOT_ALLOWED
: 405 Method Not Allowed
NOT_ACCEPTABLE
: 406 Not Acceptable
LENGTH_REQUIRED
: 411 Length Required
PRECONDITION_FAILED
: 412 Precondition Failed
SERVER_ERROR
: 500 Internal Server Error
NOT_IMPLEMENTED
: 501 Method Not Implemented
BAD_GATEWAY
: 502 Bad Gateway
VARIANT_ALSO_VARIES
: 506 Variant Also Negotiates
server
: The server software, returned as the Server header.
connection
: The connection type, returned as the Connection header (for instance, “close”.
length
: The length of the content that will be sent, returned as the Content-Length header.
language
: The language of the content, returned as the Content-Language header.
expires
: The time on which the current content expires, as a Time object, returned as the Expires header.
cookie
: A cookie or cookies, returned as one or more Set-Cookie headers. The value can be the literal string of the cookie; a CGI::Cookie object; an Array of literal cookie strings or Cookie objects; or a hash all of whose values are literal cookie strings or Cookie objects.
These cookies are in addition to the cookies held in the
@output_cookies field.
Other headers can also be set; they are appended as key: value.
Examples:
http_header # Content-Type: text/html http_header("text/plain") # Content-Type: text/plain http_header("nph" => true, "status" => "OK", # == "200 OK" # "status" => "200 GOOD", "server" => ENV['SERVER_SOFTWARE'], "connection" => "close", "type" => "text/html", "charset" => "iso-2022-jp", # Content-Type: text/html; charset=iso-2022-jp "length" => 103, "language" => "ja", "expires" => Time.now + 30, "cookie" => [cookie1, cookie2], "my_header1" => "my_value", "my_header2" => "my_value")
This method does not perform charset conversion.
() → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 296
def nph?: () -> untyped
(?String content_type_string) { () → String } → void
(Hash[interned, untyped] headers_hash) { () → String } → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 366
def out: (?String content_type_string) { () -> String } -> void
| (Hash[interned, untyped] headers_hash) { () -> String } -> void
Print an HTTP header and body to $DEFAULT_OUTPUT ($>)
content_type_string-
If a string is passed, it is assumed to be the content type.
headers_hash-
This is a
Hashof headers, similar to that used byhttp_header. block-
A block is required and should evaluate to the body of the response.
Content-Length is automatically calculated from the size of the String returned by the content block.
If ENV['REQUEST_METHOD'] == "HEAD", then only the header is output (the content block is still required, but it is ignored).
If the charset is “iso-2022-jp” or “euc-jp” or “shift_jis” then the content is converted to this charset, and the language is set to “ja”.
Example:
cgi = CGI.new cgi.out{ "string" } # Content-Type: text/html # Content-Length: 6 # # string cgi.out("text/plain") { "string" } # Content-Type: text/plain # Content-Length: 6 # # string cgi.out("nph" => true, "status" => "OK", # == "200 OK" "server" => ENV['SERVER_SOFTWARE'], "connection" => "close", "type" => "text/html", "charset" => "iso-2022-jp", # Content-Type: text/html; charset=iso-2022-jp "language" => "ja", "expires" => Time.now + (3600 * 24 * 30), "cookie" => [cookie1, cookie2], "my_header1" => "my_value", "my_header2" => "my_value") { "string" } # HTTP/1.1 200 OK # Date: Sun, 15 May 2011 17:35:54 GMT # Server: Apache 2.2.0 # Connection: close # Content-Type: text/html; charset=iso-2022-jp # Content-Length: 6 # Content-Language: ja # Expires: Tue, 14 Jun 2011 17:35:54 GMT # Set-Cookie: foo # Set-Cookie: bar # my_header1: my_value # my_header2: my_value # # string
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 378
def print: (*String options) -> void
Print an argument or list of arguments to the default output stream
cgi = CGI.new cgi.print # default: cgi.print == $DEFAULT_OUTPUT.print
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.1.1/stdlib/cgi/0/core.rbs, line 388
def stdinput: () -> ::IO
Synonym for $stdin.