Permalink
Browse files

a few renaming

better GW_ENVIRONMENT interface
  • Loading branch information...
1 parent 545db51 commit f1d8d188110d219f67f5f067dd41e350d6029589 @jocelyn jocelyn committed Jul 7, 2011
View
6 .gitmodules
@@ -1,3 +1,9 @@
[submodule "doc/wiki"]
path = doc/wiki
url = https://github.com/Eiffel-World/Eiffel-Web-Framework.wiki.git
+[submodule "ext\\server\\nino"]
+ path = ext\\server\\nino
+ url = http://github.com/Eiffel-World/EiffelWebNino.git
+[submodule "ext/text/json"]
+ path = ext/text/json
+ url = http://github.com/Eiffel-World/ejson-svn.git
View
20 LICENSE
@@ -0,0 +1,20 @@
+Eiffel Forum License, version 2
+
+1. Permission is hereby granted to use, copy, modify and/or distribute
+ this package, provided that:
+ * copyright notices are retained unchanged,
+ * any distribution of this package, whether modified or not,
+ includes this license text.
+
+2. Permission is hereby also granted to distribute binary programs which
+ depend on this package. If the binary program depends on a modified
+ version of this package, you are encouraged to publicly release the
+ modified version of this package.
+
+THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT WARRANTY. ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY PARTY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THIS PACKAGE.
+
2 doc/wiki
@@ -1 +1 @@
-Subproject commit 5a4a749c0f7b03ba206fb2205e470ffcffd0dbc8
+Subproject commit c6162aea7e5d8a462c443e29a01407f891d605e6
View
0 example/readme.txt → examples/readme.txt
File renamed without changes.
1 ext/server/nino
@@ -0,0 +1 @@
+Subproject commit c772fc5194d69b91d26666a99ffd051451015fdb
1 ext/text/json
@@ -0,0 +1 @@
+Subproject commit 72f89abe6416edeace6e31c6389e8fe0bab24fb1
View
2 library/ewsgi/ewsgi.ecf
@@ -11,7 +11,7 @@
</option>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="time" location="$ISE_LIBRARY\library\time\time-safe.ecf"/>
- <cluster name="interface" location="library\" recursive="true">
+ <cluster name="interface" location="src\" recursive="true">
<file_rule>
<exclude>GW_REQUEST_CONTEXT_IMP</exclude>
</file_rule>
View
414 library/ewsgi/library/gw_environment.e
@@ -1,414 +0,0 @@
-note
- description: "[
-
- Interface for a request environment
- It includes CGI interface and a few extra values that are usually valuable
-
-
- -- A `Script URI' can be defined; this describes the resource identified
- -- by the environment variables. Often, this URI will be the same as the
- -- URI requested by the client (the `Client URI'); however, it need not
- -- be. Instead, it could be a URI invented by the server, and so it can
- -- only be used in the context of the server and its CGI interface.
- --
- -- The script URI has the syntax of generic-RL as defined in section 2.1
- -- of RFC 1808 [7], with the exception that object parameters and
- -- fragment identifiers are not permitted:
- --
- -- <scheme>://<host>:<port>/<path>?<query>
- --
- -- The various components of the script URI are defined by some of the
- -- environment variables (see below);
- --
- -- script-uri = protocol "://" SERVER_NAME ":" SERVER_PORT enc-script
- -- enc-path-info "?" QUERY_STRING
- --
- -- where `protocol' is found from SERVER_PROTOCOL, `enc-script' is a
- -- URL-encoded version of SCRIPT_NAME and `enc-path-info' is a
- -- URL-encoded version of PATH_INFO.
-
- ]"
- legal: "See notice at end of class."
- status: "See notice at end of class."
- date: "$Date$"
- revision: "$Revision$"
-
-deferred
-class
- GW_ENVIRONMENT
-
-inherit
- GW_VARIABLES [STRING_8]
--- undefine
--- copy, is_equal
--- end
-
- ITERABLE [STRING_8]
-
--- HASH_TABLE [STRING, STRING]
--- undefine
--- empty_duplicate --| Hwo come I need that??? CHECK BUG
--- end
-
-feature -- Access
-
- table: HASH_TABLE [STRING, STRING]
- -- These variables are specific to requests made with HTTP.
- -- Interpretation of these variables may depend on the value of
- -- SERVER_PROTOCOL.
- --
- -- Environment variables with names beginning with "HTTP_" contain
- -- header data read from the client, if the protocol used was HTTP.
- -- The HTTP header name is converted to upper case, has all
- -- occurrences of "-" replaced with "_" and has "HTTP_" prepended to
- -- give the environment variable name. The header data may be
- -- presented as sent by the client, or may be rewritten in ways which
- -- do not change its semantics. If multiple headers with the same
- -- field-name are received then they must be rewritten as a single
- -- header having the same semantics. Similarly, a header that is
- -- received on more than one line must be merged onto a single line.
- -- The server must, if necessary, change the representation of the
- -- data (for example, the character set) to be appropriate for a CGI
- -- environment variable.
- --
- -- The server is not required to create environment variables for all
- -- the headers that it receives. In particular, it may remove any
- -- headers carrying authentication information, such as
- -- "Authorization"; it may remove headers whose value is available to
- -- the script via other variables, such as "Content-Length" and
- -- "Content-Type".
- deferred
- end
-
-feature -- Access: table
-
- new_cursor: HASH_TABLE_ITERATION_CURSOR [STRING_8, STRING_8]
- -- Fresh cursor associated with current structure
- do
- create Result.make (table)
- end
-
-feature -- Common Gateway Interface - 1.1 8 January 1996
-
- auth_type: detachable STRING
- -- The variable is specific to requests made with HTTP.
- -- If the script URI would require access authentication for external
- -- access, then this variable is found from the `auth-scheme' token
- -- in the request, otherwise NULL.
- -- auth-scheme = "Basic" | token
- -- HTTP access authentication schemes are described in section 11 of s
- -- the HTTP/1.0 specification [3]. The auth-scheme is not
- -- case-sensitive.
- deferred
- end
-
- content_length: INTEGER
- -- The size of the entity attached to the request, if any, in decimal
- -- number of octets. If no data is attached, then NULL. The syntax is
- -- the same as the HTTP Content-Length header (section 10, HTTP/1.0
- -- specification [3]).
- --
- -- CONTENT_LENGTH = "" | [ 1*digit ]
- deferred
- end
-
- content_type: STRING
- -- The Internet Media Type [9] of the attached entity. The syntax is
- -- the same as the HTTP Content-Type header.
- --
- -- CONTENT_TYPE = "" | media-type
- -- media-type = type "/" subtype *( ";" parameter)
- -- type = token
- -- subtype = token
- -- parameter = attribute "=" value
- -- attribute = token
- -- value = token | quoted-string
- --
- -- The type, subtype and parameter attribute names are not
- -- case-sensitive. Parameter values may be case sensitive. Media
- -- types and their use in HTTP are described section 3.6 of the
- -- HTTP/1.0 specification [3]. Example:
- --
- -- application/x-www-form-urlencoded
- --
- -- There is no default value for this variable. If and only if it is
- -- unset, then the script may attempt to determine the media type
- -- from the data received. If the type remains unknown, then
- -- application/octet-stream should be assumed.
- deferred
- end
-
- gateway_interface: STRING
- -- The version of the CGI specification to which this server
- -- complies. Syntax:
- --
- -- GATEWAY_INTERFACE = "CGI" "/" 1*digit "." 1*digit
- --
- -- Note that the major and minor numbers are treated as separate
- -- integers and that each may be incremented higher than a single
- -- digit. Thus CGI/2.4 is a lower version than CGI/2.13 which in
- -- turn is lower than CGI/12.3. Leading zeros must be ignored by
- -- scripts and should never be generated by servers.
- deferred
- end
-
- path_info: STRING
- -- A path to be interpreted by the CGI script. It identifies the
- -- resource or sub-resource to be returned by the CGI script. The
- -- syntax and semantics are similar to a decoded HTTP URL `hpath'
- -- token (defined in RFC 1738 [4]), with the exception that a
- -- PATH_INFO of "/" represents a single void path segment. Otherwise,
- -- the leading "/" character is not part of the path.
- -- PATH_INFO = "" | "/" path
- -- path = segment *( "/" segment )
- -- segment = *pchar
- -- pchar = <any CHAR except "/">
- -- The PATH_INFO string is the trailing part of the <path> component
- -- of the script URI that follows the SCRIPT_NAME part of the path.
- --
- --| For instance, if the current script was accessed via the URL
- --| http://www.example.com/eiffel/path_info.exe/some/stuff?foo=bar, then $_SERVER['PATH_INFO'] would contain /some/stuff.
- --|
- --| Note that is the PATH_INFO variable does not exists, the `path_info' value will be empty
- deferred
- end
-
- path_translated: STRING
- -- The OS path to the file that the server would attempt to access
- -- were the client to request the absolute URL containing the path
- -- PATH_INFO. i.e for a request of
-
- -- protocol "://" SERVER_NAME ":" SERVER_PORT enc-path-info
-
- -- where `enc-path-info' is a URL-encoded version of PATH_INFO. If
- -- PATH_INFO is NULL then PATH_TRANSLATED is set to NULL.
-
- -- PATH_TRANSLATED = *CHAR
-
- -- PATH_TRANSLATED need not be supported by the server. The server
- -- may choose to set PATH_TRANSLATED to NULL for reasons of security,
- -- or because the path would not be interpretable by a CGI script;
- -- such as the object it represented was internal to the server and
- -- not visible in the file-system; or for any other reason.
-
- -- The algorithm the server uses to derive PATH_TRANSLATED is
- -- obviously implementation defined; CGI scripts which use this
- -- variable may suffer limited portability.
- deferred
- end
-
- query_string: STRING
- -- A URL-encoded search string; the <query> part of the script URI.
-
- -- QUERY_STRING = query-string
- -- query-string = *qchar
- -- qchar = unreserved | escape | reserved
- -- unreserved = alpha | digit | safe | extra
- -- reserved = ";" | "/" | "?" | ":" | "@" | "&" | "="
- -- safe = "$" | "-" | "_" | "." | "+"
- -- extra = "!" | "*" | "'" | "(" | ")" | ","
- -- escape = "%" hex hex
- -- hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | "a"
- -- | "b" | "c" | "d" | "e" | "f"
-
- -- The URL syntax for a search string is described in RFC 1738 [4].
- deferred
- end
-
- remote_addr: STRING
- -- The IP address of the agent sending the request to the server. Not
- -- necessarily that of the client.
-
- -- REMOTE_ADDR = hostnumber
- -- hostnumber = digits "." digits "." digits "." digits
- -- digits = 1*digit
- deferred
- end
-
- remote_host: STRING
- -- The fully qualified domain name of the agent sending the request
- -- to the server, if available, otherwise NULL. Not necessarily that
- -- of the client. Fully qualified domain names take the form as
- -- described in section 3.5 of RFC 1034 [8] and section 2.1 of RFC
- -- 1123 [5]; a sequence of domain labels separated by ".", each
- -- domain label starting and ending with an alphanumerical character
- -- and possibly also containing "-" characters. The rightmost domain
- -- label will never start with a digit. Domain names are not case
- -- sensitive.
-
- -- REMOTE_HOST = "" | hostname
- -- hostname = *( domainlabel ".") toplabel
- -- domainlabel = alphadigit [ *alphahypdigit alphadigit ]
- -- toplabel = alpha [ *alphahypdigit alphadigit ]
- -- alphahypdigit = alphadigit | "-"
- -- alphadigit = alpha | digit
- deferred
- end
-
- remote_ident: detachable STRING
- -- The identity information reported about the connection by a RFC
- -- 931 [10] request to the remote agent, if available. The server may
- -- choose not to support this feature, or not to request the data for
- -- efficiency reasons.
-
- -- REMOTE_IDENT = *CHAR
-
- -- The data returned is not appropriate for use as authentication
- -- information.
- deferred
- end
-
- remote_user: detachable STRING
- -- This variable is specific to requests made with HTTP.
-
- -- If AUTH_TYPE is "Basic", then the user-ID sent by the client. If
- -- AUTH_TYPE is NULL, then NULL, otherwise undefined.
-
- -- userid = token
- deferred
- end
-
- request_method: STRING
- -- This variable is specific to requests made with HTTP.
-
- -- The method with which the request was made, as described in
- -- section 5.1.1 of the HTTP/1.0 specification [3].
-
- -- http-method = "GET" | "HEAD" | "POST" | extension-method
- -- extension-method = token
-
- -- The method is case sensitive.
- deferred
- end
-
- script_name: STRING
- -- A URL path that could identify the CGI script (rather then the
- -- particular CGI output). The syntax and semantics are identical to
- -- a decoded HTTP URL `hpath' token [4].
-
- -- SCRIPT_NAME = "" | "/" [ path ]
-
- -- The leading "/" is not part of the path. It is optional if the
- -- path is NULL.
-
- -- The SCRIPT_NAME string is some leading part of the <path>
- -- component of the script URI derived in some implementation defined
- -- manner.
- deferred
- end
-
- server_name: STRING
- -- The name for this server, as used in the <host> part of the script
- -- URI. Thus either a fully qualified domain name, or an IP address.
-
- -- SERVER_NAME = hostname | hostnumber
- deferred
- end
-
- server_port: INTEGER
- -- The port on which this request was received, as used in the <port>
- -- part of the script URI.
-
- -- SERVER_PORT = 1*digit
- deferred
- end
-
- server_protocol: STRING
- -- The name and revision of the information protocol this request
- -- came in with.
-
- -- SERVER_PROTOCOL = HTTP-Version | extension-version
- -- HTTP-Version = "HTTP" "/" 1*digit "." 1*digit
- -- extension-version = protocol "/" 1*digit "." 1*digit
- -- protocol = 1*( alpha | digit | "+" | "-" | "." )
-
- -- `protocol' is a version of the <scheme> part of the script URI,
- -- and is not case sensitive. By convention, `protocol' is in upper
- -- case.
- deferred
- end
-
- server_software: STRING
- -- The name and version of the information server software answering
- -- the request (and running the gateway).
-
- -- SERVER_SOFTWARE = *CHAR
- deferred
- end
-
-feature -- HTTP_*
-
- http_accept_charset: detachable STRING
- -- Contents of the Accept-Charset: header from the current request, if there is one.
- -- Example: 'iso-8859-1,*,utf-8'.
- deferred
- end
-
- http_accept_encoding: detachable STRING
- -- Contents of the Accept-Encoding: header from the current request, if there is one.
- -- Example: 'gzip'.
- deferred
- end
-
- http_accept_language: detachable STRING
- -- Contents of the Accept-Language: header from the current request, if there is one.
- -- Example: 'en'.
- deferred
- end
-
- http_connection: detachable STRING
- -- Contents of the Connection: header from the current request, if there is one.
- -- Example: 'Keep-Alive'.
- deferred
- end
-
- http_host: detachable STRING
- -- Contents of the Host: header from the current request, if there is one.
- deferred
- end
-
- http_referer: detachable STRING
- -- The address of the page (if any) which referred the user agent to the current page.
- -- This is set by the user agent.
- -- Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature.
- -- In short, it cannot really be trusted.
- deferred
- end
-
- http_user_agent: detachable STRING
- -- Contents of the User-Agent: header from the current request, if there is one.
- -- This is a string denoting the user agent being which is accessing the page.
- -- A typical example is: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586).
- -- Among other things, you can use this value to tailor your page's
- -- output to the capabilities of the user agent.
- deferred
- end
-
- http_authorization: detachable STRING
- -- Contents of the Authorization: header from the current request, if there is one.
- deferred
- end
-
-feature -- Extra
-
- request_uri: STRING
- -- The URI which was given in order to access this page; for instance, '/index.html'.
- deferred
- end
-
- orig_path_info: detachable STRING
- -- Original version of `path_info' before processed by Current environment
- deferred
- end
-
-;note
- copyright: "2011-2011, Eiffel Software and others"
- license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
- source: "[
- Eiffel Software
- 5949 Hollister Ave., Goleta, CA 93117 USA
- Telephone 805-685-1006, Fax 805-685-6869
- Website http://www.eiffel.com
- Customer support http://support.eiffel.com
- ]"
-end
View
0 library/ewsgi/library/gw_application.e → library/ewsgi/src/gw_application.e
File renamed without changes.
View
0 library/ewsgi/library/gw_cookie.e → library/ewsgi/src/gw_cookie.e
File renamed without changes.
View
602 library/ewsgi/src/gw_environment.e
@@ -0,0 +1,602 @@
+note
+ description: "[
+
+ Interface for a request environment
+ It includes CGI interface and a few extra values that are usually valuable
+
+ See http://ken.coar.org/cgi/draft-coar-cgi-v11-03.txt
+
+ 2.2. Basic Rules
+
+ The following rules are used throughout this specification to
+ describe basic parsing constructs.
+
+ alpha = lowalpha | hialpha
+ alphanum = alpha | digit
+ lowalpha = a | b | c | d | e | f | g | h
+ | i | j | k | l | m | n | o | p
+ | q | r | s | t | u | v | w | x
+ | y | z
+ hialpha = A | B | C | D | E | F | G | H
+ | I | J | K | L | M | N | O | P
+ | Q | R | S | T | U | V | W | X
+ | Y | Z
+ digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
+ | 8 | 9
+ hex = digit | A | B | C | D | E | F | a
+ | b | c | d | e | f
+ escaped = % hex hex
+ OCTET = <any 8-bit sequence of data>
+ CHAR = <any US-ASCII character (octets 0 - 127)>
+ CTL = <any US-ASCII control character
+ (octets 0 - 31) and DEL (127)>
+ CR = <US-ASCII CR, carriage return (13)>
+ LF = <US-ASCII LF, linefeed (10)>
+ SP = <US-ASCII SP, space (32)>
+ HT = <US-ASCII HT, horizontal tab (9)>
+ NL = CR | LF
+ LWSP = SP | HT | NL
+ tspecial = ( | ) | "@" | , | ; | : | \ | "
+ | / | [ | ] | ? | < | > | { | }
+ | SP | HT | NL
+ token = 1*<any CHAR except CTLs or tspecials>
+ quoted-string = ( " *qdtext " ) | ( "<" *qatext ">")
+ qdtext = <any CHAR except %" and CTLs but including LWSP>
+ qatext = <any CHAR except "<", ">" and CTLs but including LWSP>
+ mark = - | _ | . | ! | ~ | * | ' | ( | )
+ unreserved = alphanum | mark
+ reserved = ; | / | ? | : | @ | & | = | $ | ,
+ uric = reserved | unreserved | escaped
+
+ Note that newline (NL) need not be a single character, but can
+ be a character sequence.
+
+ 3.2. The Script-URI
+
+ The 'Script-URI' is defined as the URI of the resource
+ identified by the metavariables. Often, this URI will be the
+ same as the URI requested by the client (the 'Client-URI');
+ however, it need not be. Instead, it could be a URI invented
+ by the server, and so it can only be used in the context of
+ the server and its CGI interface.
+
+ The Script-URI has the syntax of generic-RL as defined in
+ section 2.1 of RFC 1808 [7], with the exception that object
+ parameters and fragment identifiers are not permitted:
+
+ <scheme>://<host><port>/<path>?<query>
+
+ The various components of the Script-URI are defined by some
+ of the metavariables (see section 4 below);
+
+ script-uri = protocol "://" SERVER_NAME ":" SERVER_PORT enc-script
+ enc-path-info "?" QUERY_STRING
+
+ where 'protocol' is obtained from SERVER_PROTOCOL,
+ 'enc-script' is a URL-encoded version of SCRIPT_NAME and
+ 'enc-path-info' is a URL-encoded version of PATH_INFO. See
+ section 4.6 for more information about the PATH_INFO
+ metavariable.
+
+ Note that the scheme and the protocol are not identical; for
+ instance, a resource accessed via an SSL mechanism may have a
+ Client-URI with a scheme of "https" rather than "http".
+ CGI/1.1 provides no means for the script to reconstruct this,
+ and therefore the Script-URI includes the base protocol used.
+ ]"
+ legal: "See notice at end of class."
+ status: "See notice at end of class."
+ date: "$Date$"
+ revision: "$Revision$"
+
+deferred
+class
+ GW_ENVIRONMENT
+
+inherit
+ GW_VARIABLES [STRING_8]
+
+ ITERABLE [STRING_8]
+
+feature -- Access
+
+ table: HASH_TABLE [STRING, STRING]
+ -- These variables are specific to requests made with HTTP.
+ -- Interpretation of these variables may depend on the value of
+ -- SERVER_PROTOCOL.
+ --
+ -- Environment variables with names beginning with "HTTP_" contain
+ -- header data read from the client, if the protocol used was HTTP.
+ -- The HTTP header name is converted to upper case, has all
+ -- occurrences of "-" replaced with "_" and has "HTTP_" prepended to
+ -- give the environment variable name. The header data may be
+ -- presented as sent by the client, or may be rewritten in ways which
+ -- do not change its semantics. If multiple headers with the same
+ -- field-name are received then they must be rewritten as a single
+ -- header having the same semantics. Similarly, a header that is
+ -- received on more than one line must be merged onto a single line.
+ -- The server must, if necessary, change the representation of the
+ -- data (for example, the character set) to be appropriate for a CGI
+ -- environment variable.
+ --
+ -- The server is not required to create environment variables for all
+ -- the headers that it receives. In particular, it may remove any
+ -- headers carrying authentication information, such as
+ -- "Authorization"; it may remove headers whose value is available to
+ -- the script via other variables, such as "Content-Length" and
+ -- "Content-Type".
+ --
+ -- For convenience it might also include the following CGI entries
+ deferred
+ end
+
+feature -- Access: table
+
+ new_cursor: HASH_TABLE_ITERATION_CURSOR [STRING_8, STRING_8]
+ -- Fresh cursor associated with current structure
+ do
+ create Result.make (table)
+ end
+
+feature -- Common Gateway Interface - 1.1 8 January 1996
+
+ auth_type: detachable STRING
+ -- This variable is specific to requests made via the "http"
+ -- scheme.
+ --
+ -- If the Script-URI required access authentication for external
+ -- access, then the server MUST set the value of this variable
+ -- from the 'auth-scheme' token in the request's "Authorization"
+ -- header field. Otherwise it is set to NULL.
+ --
+ -- AUTH_TYPE = "" | auth-scheme
+ -- auth-scheme = "Basic" | "Digest" | token
+ --
+ -- HTTP access authentication schemes are described in section 11
+ -- of the HTTP/1.1 specification [8]. The auth-scheme is not
+ -- case-sensitive.
+ --
+ -- Servers MUST provide this metavariable to scripts if the
+ -- request header included an "Authorization" field that was
+ -- authenticated.
+ deferred
+ end
+
+ content_length: detachable STRING
+ -- This metavariable is set to the size of the message-body
+ -- entity attached to the request, if any, in decimal number of
+ -- octets. If no data are attached, then this metavariable is
+ -- either NULL or not defined. The syntax is the same as for the
+ -- HTTP "Content-Length" header field (section 14.14, HTTP/1.1
+ -- specification [8]).
+ --
+ -- CONTENT_LENGTH = "" | 1*digit
+ --
+ -- Servers MUST provide this metavariable to scripts if the
+ -- request was accompanied by a message-body entity.
+ deferred
+ end
+
+ content_length_value: INTEGER
+ -- Integer value related to `content_length"
+ deferred
+ end
+
+ content_type: detachable STRING
+ -- If the request includes a message-body, CONTENT_TYPE is set to
+ -- the Internet Media Type [9] of the attached entity if the type
+ -- was provided via a "Content-type" field in the request header,
+ -- or if the server can determine it in the absence of a supplied
+ -- "Content-type" field. The syntax is the same as for the HTTP
+ -- "Content-Type" header field.
+ --
+ -- CONTENT_TYPE = "" | media-type
+ -- media-type = type "/" subtype *( ";" parameter)
+ -- type = token
+ -- subtype = token
+ -- parameter = attribute "=" value
+ -- attribute = token
+ -- value = token | quoted-string
+ --
+ -- The type, subtype, and parameter attribute names are not
+ -- case-sensitive. Parameter values MAY be case sensitive. Media
+ -- types and their use in HTTP are described in section 3.7 of
+ -- the HTTP/1.1 specification [8].
+ --
+ -- Example:
+ --
+ -- application/x-www-form-urlencoded
+ --
+ -- There is no default value for this variable. If and only if it
+ -- is unset, then the script MAY attempt to determine the media
+ -- type from the data received. If the type remains unknown, then
+ -- the script MAY choose to either assume a content-type of
+ -- application/octet-stream or reject the request with a 415
+ -- ("Unsupported Media Type") error. See section 7.2.1.3 for more
+ -- information about returning error status values.
+ --
+ -- Servers MUST provide this metavariable to scripts if a
+ -- "Content-Type" field was present in the original request
+ -- header. If the server receives a request with an attached
+ -- entity but no "Content-Type" header field, it MAY attempt to
+ -- determine the correct datatype, or it MAY omit this
+ -- metavariable when communicating the request information to the
+ -- script.
+ deferred
+ end
+
+ gateway_interface: STRING
+ -- This metavariable is set to the dialect of CGI being used by
+ -- the server to communicate with the script. Syntax:
+ --
+ -- GATEWAY_INTERFACE = "CGI" "/" major "." minor
+ -- major = 1*digit
+ -- minor = 1*digit
+ --
+ -- Note that the major and minor numbers are treated as separate
+ -- integers and hence each may be more than a single digit. Thus
+ -- CGI/2.4 is a lower version than CGI/2.13 which in turn is
+ -- lower than CGI/12.3. Leading zeros in either the major or the
+ -- minor number MUST be ignored by scripts and SHOULD NOT be
+ -- generated by servers.
+ --
+ -- This document defines the 1.1 version of the CGI interface
+ -- ("CGI/1.1").
+ --
+ -- Servers MUST provide this metavariable to scripts.
+ --
+ -- The version of the CGI specification to which this server
+ -- complies. Syntax:
+ --
+ -- GATEWAY_INTERFACE = "CGI" "/" 1*digit "." 1*digit
+ --
+ -- Note that the major and minor numbers are treated as separate
+ -- integers and that each may be incremented higher than a single
+ -- digit. Thus CGI/2.4 is a lower version than CGI/2.13 which in
+ -- turn is lower than CGI/12.3. Leading zeros must be ignored by
+ -- scripts and should never be generated by servers.
+ deferred
+ end
+
+ path_info: STRING
+ -- The PATH_INFO metavariable specifies a path to be interpreted
+ -- by the CGI script. It identifies the resource or sub-resource
+ -- to be returned by the CGI script, and it is derived from the
+ -- portion of the URI path following the script name but
+ -- preceding any query data. The syntax and semantics are similar
+ -- to a decoded HTTP URL 'path' token (defined in RFC 2396 [4]),
+ -- with the exception that a PATH_INFO of "/" represents a single
+ -- void path segment.
+ --
+ -- PATH_INFO = "" | ( "/" path )
+ -- path = segment *( "/" segment )
+ -- segment = *pchar
+ -- pchar = <any CHAR except "/">
+ --
+ -- The PATH_INFO string is the trailing part of the <path>
+ -- component of the Script-URI (see section 3.2) that follows the
+ -- SCRIPT_NAME portion of the path.
+ --
+ -- Servers MAY impose their own restrictions and limitations on
+ -- what values they will accept for PATH_INFO, and MAY reject or
+ -- edit any values they consider objectionable before passing
+ -- them to the script.
+ --
+ -- Servers MUST make this URI component available to CGI scripts.
+ -- The PATH_INFO value is case-sensitive, and the server MUST
+ -- preserve the case of the PATH_INFO element of the URI when
+ -- making it available to scripts.
+ deferred
+ end
+
+ path_translated: detachable STRING
+ -- PATH_TRANSLATED is derived by taking any path-info component
+ -- of the request URI (see section 6.1.6), decoding it (see
+ -- section 3.1), parsing it as a URI in its own right, and
+ -- performing any virtual-to-physical translation appropriate to
+ -- map it onto the server's document repository structure. If the
+ -- request URI includes no path-info component, the
+ -- PATH_TRANSLATED metavariable SHOULD NOT be defined.
+ --
+ --
+ -- PATH_TRANSLATED = *CHAR
+ --
+ -- For a request such as the following:
+ --
+ -- http://somehost.com/cgi-bin/somescript/this%2eis%2epath%2einfo
+ --
+ -- the PATH_INFO component would be decoded, and the result
+ -- parsed as though it were a request for the following:
+ --
+ -- http://somehost.com/this.is.the.path.info
+ --
+ -- This would then be translated to a location in the server's
+ -- document repository, perhaps a filesystem path something like
+ -- this:
+ --
+ -- /usr/local/www/htdocs/this.is.the.path.info
+ --
+ -- The result of the translation is the value of PATH_TRANSLATED.
+ --
+ -- The value of PATH_TRANSLATED may or may not map to a valid
+ -- repository location. Servers MUST preserve the case of the
+ -- path-info segment if and only if the underlying repository
+ -- supports case-sensitive names. If the repository is only
+ -- case-aware, case-preserving, or case-blind with regard to
+ -- document names, servers are not required to preserve the case
+ -- of the original segment through the translation.
+ --
+ -- The translation algorithm the server uses to derive
+ -- PATH_TRANSLATED is implementation defined; CGI scripts which
+ -- use this variable may suffer limited portability.
+ --
+ -- Servers SHOULD provide this metavariable to scripts if and
+ -- only if the request URI includes a path-info component.
+ deferred
+ end
+
+ query_string: STRING
+ -- A URL-encoded string; the <query> part of the Script-URI. (See
+ -- section 3.2.)
+ --
+ -- QUERY_STRING = query-string
+ -- query-string = *uric
+
+ -- The URL syntax for a query string is described in section 3 of
+ -- RFC 2396 [4].
+ --
+ -- Servers MUST supply this value to scripts. The QUERY_STRING
+ -- value is case-sensitive. If the Script-URI does not include a
+ -- query component, the QUERY_STRING metavariable MUST be defined
+ -- as an empty string ("").
+ deferred
+ end
+
+ remote_addr: STRING
+ -- The IP address of the client sending the request to the
+ -- server. This is not necessarily that of the user agent (such
+ -- as if the request came through a proxy).
+ --
+ -- REMOTE_ADDR = hostnumber
+ -- hostnumber = ipv4-address | ipv6-address
+
+ -- The definitions of ipv4-address and ipv6-address are provided
+ -- in Appendix B of RFC 2373 [13].
+ --
+ -- Servers MUST supply this value to scripts.
+ deferred
+ end
+
+ remote_host: detachable STRING
+ -- The fully qualified domain name of the client sending the
+ -- request to the server, if available, otherwise NULL. (See
+ -- section 6.1.9.) Fully qualified domain names take the form as
+ -- described in section 3.5 of RFC 1034 [10] and section 2.1 of
+ -- RFC 1123 [5]. Domain names are not case sensitive.
+ --
+ -- Servers SHOULD provide this information to scripts.
+ deferred
+ end
+
+ remote_ident: detachable STRING
+ -- The identity information reported about the connection by a
+ -- RFC 1413 [11] request to the remote agent, if available.
+ -- Servers MAY choose not to support this feature, or not to
+ -- request the data for efficiency reasons.
+ --
+ -- REMOTE_IDENT = *CHAR
+ --
+ -- The data returned may be used for authentication purposes, but
+ -- the level of trust reposed in them should be minimal.
+ --
+ -- Servers MAY supply this information to scripts if the RFC1413
+ -- [11] lookup is performed.
+ deferred
+ end
+
+ remote_user: detachable STRING
+ -- If the request required authentication using the "Basic"
+ -- mechanism (i.e., the AUTH_TYPE metavariable is set to
+ -- "Basic"), then the value of the REMOTE_USER metavariable is
+ -- set to the user-ID supplied. In all other cases the value of
+ -- this metavariable is undefined.
+ --
+ -- REMOTE_USER = *OCTET
+ --
+ -- This variable is specific to requests made via the HTTP
+ -- protocol.
+ --
+ -- Servers SHOULD provide this metavariable to scripts.
+ deferred
+ end
+
+ request_method: STRING
+ -- The REQUEST_METHOD metavariable is set to the method with
+ -- which the request was made, as described in section 5.1.1 of
+ -- the HTTP/1.0 specification [3] and section 5.1.1 of the
+ -- HTTP/1.1 specification [8].
+ --
+ -- REQUEST_METHOD = http-method
+ -- http-method = "GET" | "HEAD" | "POST" | "PUT" | "DELETE"
+ -- | "OPTIONS" | "TRACE" | extension-method
+ -- extension-method = token
+ --
+ -- The method is case sensitive. CGI/1.1 servers MAY choose to
+ -- process some methods directly rather than passing them to
+ -- scripts.
+ --
+ -- This variable is specific to requests made with HTTP.
+ --
+ -- Servers MUST provide this metavariable to scripts.
+ deferred
+ end
+
+ script_name: STRING
+ -- The SCRIPT_NAME metavariable is set to a URL path that could
+ -- identify the CGI script (rather than the script's output). The
+ -- syntax and semantics are identical to a decoded HTTP URL
+ -- 'path' token (see RFC 2396 [4]).
+ --
+ -- SCRIPT_NAME = "" | ( "/" [ path ] )
+ --
+ -- The SCRIPT_NAME string is some leading part of the <path>
+ -- component of the Script-URI derived in some implementation
+ -- defined manner. No PATH_INFO or QUERY_STRING segments (see
+ -- sections 6.1.6 and 6.1.8) are included in the SCRIPT_NAME
+ -- value.
+ --
+ -- Servers MUST provide this metavariable to scripts.
+ deferred
+ end
+
+ server_name: STRING
+ -- The SERVER_NAME metavariable is set to the name of the server,
+ -- as derived from the <host> part of the Script-URI (see section
+ -- 3.2).
+ --
+ -- SERVER_NAME = hostname | hostnumber
+ --
+ -- Servers MUST provide this metavariable to scripts.
+ deferred
+ end
+
+ server_port: INTEGER
+ -- The SERVER_PORT metavariable is set to the port on which the
+ -- request was received, as used in the <port> part of the
+ -- Script-URI.
+ --
+ -- SERVER_PORT = 1*digit
+ --
+ -- If the <port> portion of the script-URI is blank, the actual
+ -- port number upon which the request was received MUST be
+ -- supplied.
+ --
+ -- Servers MUST provide this metavariable to scripts.
+ deferred
+ end
+
+ server_protocol: STRING
+ -- The SERVER_PROTOCOL metavariable is set to the name and
+ -- revision of the information protocol with which the request
+ -- arrived. This is not necessarily the same as the protocol
+ -- version used by the server in its response to the client.
+ --
+ -- SERVER_PROTOCOL = HTTP-Version | extension-version
+ -- | extension-token
+ -- HTTP-Version = "HTTP" "/" 1*digit "." 1*digit
+ -- extension-version = protocol "/" 1*digit "." 1*digit
+ -- protocol = 1*( alpha | digit | "+" | "-" | "." )
+ -- extension-token = token
+ --
+ -- 'protocol' is a version of the <scheme> part of the
+ -- Script-URI, but is not identical to it. For example, the
+ -- scheme of a request may be "https" while the protocol remains
+ -- "http". The protocol is not case sensitive, but by convention,
+ -- 'protocol' is in upper case.
+ --
+ -- A well-known extension token value is "INCLUDED", which
+ -- signals that the current document is being included as part of
+ -- a composite document, rather than being the direct target of
+ -- the client request.
+ --
+ -- Servers MUST provide this metavariable to scripts.
+ deferred
+ end
+
+ server_software: STRING
+ -- The SERVER_SOFTWARE metavariable is set to the name and
+ -- version of the information server software answering the
+ -- request (and running the gateway).
+ --
+ -- SERVER_SOFTWARE = 1*product
+ -- product = token [ "/" product-version ]
+ -- product-version = token
+
+ -- Servers MUST provide this metavariable to scripts.
+ deferred
+ end
+
+feature -- HTTP_*
+
+ http_accept_charset: detachable STRING
+ -- Contents of the Accept-Charset: header from the current request, if there is one.
+ -- Example: 'iso-8859-1,*,utf-8'.
+ deferred
+ end
+
+ http_accept_encoding: detachable STRING
+ -- Contents of the Accept-Encoding: header from the current request, if there is one.
+ -- Example: 'gzip'.
+ deferred
+ end
+
+ http_accept_language: detachable STRING
+ -- Contents of the Accept-Language: header from the current request, if there is one.
+ -- Example: 'en'.
+ deferred
+ end
+
+ http_connection: detachable STRING
+ -- Contents of the Connection: header from the current request, if there is one.
+ -- Example: 'Keep-Alive'.
+ deferred
+ end
+
+ http_host: detachable STRING
+ -- Contents of the Host: header from the current request, if there is one.
+ deferred
+ end
+
+ http_referer: detachable STRING
+ -- The address of the page (if any) which referred the user agent to the current page.
+ -- This is set by the user agent.
+ -- Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature.
+ -- In short, it cannot really be trusted.
+ deferred
+ end
+
+ http_user_agent: detachable STRING
+ -- Contents of the User-Agent: header from the current request, if there is one.
+ -- This is a string denoting the user agent being which is accessing the page.
+ -- A typical example is: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586).
+ -- Among other things, you can use this value to tailor your page's
+ -- output to the capabilities of the user agent.
+ deferred
+ end
+
+ http_authorization: detachable STRING
+ -- Contents of the Authorization: header from the current request, if there is one.
+ deferred
+ end
+
+feature -- Extra
+
+ request_uri: STRING
+ -- The URI which was given in order to access this page; for instance, '/index.html'.
+ deferred
+ end
+
+ orig_path_info: detachable STRING
+ -- Original version of `path_info' before processed by Current environment
+ deferred
+ end
+
+invariant
+ server_name_not_empty: not server_name.is_empty
+ server_port_set: server_port /= 0
+ request_method_attached: request_method /= Void
+ path_info_attached: path_info /= Void
+ query_string_attached: query_string /= Void
+ remote_addr_attached: remote_addr /= Void
+
+;note
+ copyright: "2011-2011, Eiffel Software and others"
+ license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
+ source: "[
+ Eiffel Software
+ 5949 Hollister Ave., Goleta, CA 93117 USA
+ Telephone 805-685-1006, Fax 805-685-6869
+ Website http://www.eiffel.com
+ Customer support http://support.eiffel.com
+ ]"
+end
View
0 library/ewsgi/library/gw_environment_names.e → library/ewsgi/src/gw_environment_names.e
File renamed without changes.
View
0 ...ry/ewsgi/library/gw_execution_variables.e → library/ewsgi/src/gw_execution_variables.e
File renamed without changes.
View
0 library/ewsgi/library/gw_input_stream.e → library/ewsgi/src/gw_input_stream.e
File renamed without changes.
View
0 library/ewsgi/library/gw_output_stream.e → library/ewsgi/src/gw_output_stream.e
File renamed without changes.
View
0 library/ewsgi/library/gw_request_context.e → library/ewsgi/src/gw_request_context.e
File renamed without changes.
View
0 library/ewsgi/library/gw_request_variables.e → library/ewsgi/src/gw_request_variables.e
File renamed without changes.
View
0 library/ewsgi/library/gw_variables.e → library/ewsgi/src/gw_variables.e
File renamed without changes.
View
0 test/readme.txt → tests/readme.txt
File renamed without changes.

0 comments on commit f1d8d18

Please sign in to comment.