Uri
The Uri class is a base object used to parse or build a uniform resource identifier as defined by RFC
3986. The URI can be built by specifying each component or by parsing a string. When a string is given in
the constructor, the class parses the string and extract all components. The uri components are the
scheme, the authority, the path, the query and the fragment. The class also takes care of the character
escaping.
Predicate
uri-p
Inheritance
Object
ConstructorsUri(none)
The Uri constructor creates an empty uri object.
Uri(String)
The Uri constructor create a uri object by value. The string argument is the uri to parse at the
object construction.
Uri(StringStringInteger)
The Uri constructor create a uri object by scheme host and port. The first argument is the uri
scheme. The second argument is the uri host name. The third argument is the uri port. The uri base
name can be reconstructed from this information.
Methodsparse->none(String)
The parse method reset the uri object, parse the string argument and fill the uri object with the
result.
get-scheme->String(none)
The get-scheme method returns the scheme of the parsed uri object.
get-authority->String(none)
The get-authority method returns the authority part of the parsed uri.
get-path->String(none)
The get-path method returns the path of the parsed uri.
get-path-target->String(none)
The get-path-target method returns the path target of the parsed uri. The path target is the last
element of the uri path.
get-query->String(none)
The get-query method returns the complete query string of the parsed uri. Note that characters are
not escaped when getting the string.
get-fragment->String(none)
The get-fragment method returns the complete query string of the parsed uri.
get-base->String(none)
The get-base method returns the combined uri scheme and authority.
get-rname->String(none)
The get-rname method returns the reference uri name with the combined uri scheme, authority and
path all percent encoded.
get-hname->String(none)
The get-hname method returns the combined uri scheme, authority and path.
get-aname->String(none)
The get-aname method returns the almost combined uri name with the scheme, authority, path and
query.
add-path->Uri(String)
The add-path method adds a path to the calling uri and returns a new uri with the new path added
to the old one.
get-href->Uri(String)
The get-href method returns a new uri by eventually combining the string argument. If the string
argument correspond to an uri, the corresponding uri is built. Otherwise, the string argument is
considered as a path to be added to the current uri in order to build a new uri.
get-system-path->String(none)
The get-system-path method returns the system path representation of the uri path. This function
works only if the scheme if a file scheme.
get-path-encoded->String(none)
The get-path-encoded method returns the uri in the encoded form. Normally the get-path removes the
percent-encoded characters which might not be appropriate with some protocol such like the http
protocol. The get-path-encoded returns the original path. Note that getting the path with getpath
and doing a percent coding might result in a different result since the internal representation
uses normalized string.
get-host->String(none)
The get-host method returns the authority or path host name if any can be found with respect to
the scheme. With a ftp, http or https scheme, the host is extracted from the authority. With a
mailto scheme, the host is extracted from the path.
get-port->Integer(none)
The get-port method returns the authority port if any can be found with respect to the scheme.
UriQuery
The UriQuery class is a simple class that parses a uri query string and build property list. during the
parsing process, a special transliteration process is done as specified by RFC 3986. This class is
primarily used with cgi scripts. Note that the string to parse is exactly the one produced by the get-
query method of the Uri class.
Predicate
uri-query-p
Inheritance
Plist
ConstructorsUriQuery(none)
The UriQuery constructor creates an empty uri query object.
UriQuery(String)
The UriQuery constructor create a uri object by value. The string argument is the uri query string
to parse at the object construction. The query string is the one obtained from the get-query
method of the Uri class.
Methodsparse->none(String)
The parse method reset the uri query object, parses the string argument and fill the property list
object with the result.
get-query->String(none)
The get-query method returns the original query string.
UriPath
The UriPath class is a class designed for the management of file system path associated with a uri.
Typically, this class will be used with a http server or client when an association between a uri and a
file name needs to be made. The general operation principle is to associate a path with a uri authority.
The uri path is then concatanated to produce a new path. If the uri path is empty, it can be eventually
replaced by a file name, known as the diretory index in the http terminology.
Predicate
uri-path-p
Inheritance
Object
ConstructorsUriPath(none)
The UriPath constructor creates an empty uri path object.
UriPath(String)
The UriPath constructor create a uri object by root path. The string argument is the uri root
path.
UriPath(StringString)
The UriPath constructor create a uri object by root and index. The first string argument is the
uri root path and the second string argument is the directory index path.
UriPath(StringStringString)
The UriPath constructor create a uri object by root, index and authority. The first string
argument is the uri root path, the second string argument is the directory index path and the
third argument is the authority.
Methodsget-root->String(none)
The get-root method returns the root path.
get-index->String(none)
The get-index method returns the index path.
get-authority->String(none)
The get-authority method returns the uri authority.
map-request-uri->String(none)
The map-request-uri map a request uri into a system path. The string argument is the request uri.
The request uri must be an absolute path. The result string is the system path build with the root
path.
normalize->String(none)
The normalize method build a system from a request path. The request path is associated with the
root path and then normalized to produce a complete system path.
HttpProto
The HttpProto class is a base class that ease the deployment of the http protocol. The base class is
built with a property list which is used to define the message header. The class also defines the write
methods which are used to write a message either on an output stream or into a buffer.
Predicate
http-proto-p
Inheritance
Object
Methodsreset->none(none)
The reset method resets the http protocol object by clearing the protocol version and header.
parse->none(none)
The parse method parse the input stream bound to the http protocol. In order to operate, an input
stream must be associated with the protocol object or an exception is raised. After a stream has
been parsed, the protocol version and the header are set.
write->none(none|OutputStream|Buffer)
The write method formats and writes the http protocol object to an output stream or a buffer.
Without argument, the default output stream is used. With an argument, an output stream or a
buffer object can be used.
header-length->Integer(none)
The header-length method returns the number of properties in the header.
header-exists-p->Boolean(String)
The header-exists-p predicate returns true if the property exists in the header. The string
argument is the property name.
header-set->none(StringLiteral)
The header-set method sets a new property to the http header. The first argument is the property
name. The second argument is a literal object which is internally converted to a string.
header-get->Property(Integer)
The header-get method returns a property object by index.
header-map->String(String)
The header-map method returns a property value by name. The string argument is the property name.
header-find->Property(String)
The header-find method returns a property object by name. The string argument is the property
name. If the property is not found, the nil object is returned.
header-lookup->Property(String)
The header-lookup method returns a property object by name. The string argument is the property
name. If the property is not found, an exception is raised.
header-plist->Plist(none)
The header-plist method returns the header in the form of a property list.
content-length-p->Boolean(none)
The content-length-p predicate returns true if the content length is defined in the protocol
header.
get-content-length->Integer(none)
The get-content-length method returns the content length defined in the protocol header. If the
content length is not defined in the header, the null value is returned.
media-type-p->Boolean(none)
The media-type-p predicate returns true if the content type is defined in the protocol header.
get-media-type->String(none)
The get-media-type method returns the media type defined in the protocol header. If the media type
is not defined in the header, the default media type is returned.
encoding-mode-p->Boolean(none)
The encoding-mode-p predicate returns true if the encoding mode is defined in the protocol header.
get-encoding-mode->String(none)
The get-encoding-mode method returns the protocol encoding mode. If the encoding mode is not
defined in the protocol header, the default encoding mode is returned.
HttpRequest
The HttpRequest class is a base class designed to handle a http request. The class operates with the
protocol version 1.1 as defined by RFC 2616. For a server request, the request is built by reading an
input stream and setting the request command with its associated header. For a client request, the
request is formatted with a request command and a eventually a uri. In both cases, the header is filled
automatically depending on the request side.
Predicate
http-request-p
Inheritance
HttpProto
ConstructorsHttpRequest(none)
The HttpRequest constructor creates a default http request. By default, the request object is
built with the GET method and the request uri set to the root value.
HttpRequest(String)
The HttpRequest constructor creates a http request object with a specific command. By default, the
request uri is set to root, except for the OPTIONS method
HttpRequest(Uri)
The HttpRequest constructor creates a http request object with a uri. The default request method
is GET.
HttpRequest(InputStream)
The HttpRequest constructor creates a http request object with a specific input stream. At
construction, the request header is cleared and the input stream is bound to the object.
HttpRequest(StringString)
The HttpRequest constructor creates a http request object with a specific method and a uri name.
The first string argument is the request method to use. The second string argument is the uri
attached to the command. Note that the term uri should be understood as a request uri.
HttpRequest(StringUri)
The HttpRequest constructor creates a http request object with a specific method and a uri. The
first string argument is the request method to use. The second argument is the uri attached to the
method.
Methodsset-method->none(String)
The set-method method sets the request method. This method does not check that the command is a
valid HTTP method and thus leaves plenty of room for server development. As a matter of fact, RFC
2616 does not prohibit the existence of such extension.
get-method->String(none)
The get-method method returns the request method string.
set-uri->none(String)
The set-uri method sets the request uri. The argument string does not have to be a valid uri
string since some commands might accept special string such like "*" to indicate all applicable
uri.
get-uri->String(none)
The get-uri method returns the request uri string.
HttpResponse
The HttpResponse class is a base class designed to handle a http response. The class operates with the
protocol version 1.1 as defined by RFC 2616. For a client response, the response is built by reading an
input stream and setting the response status code with its associated header. For a server response, the
response is formatted with a response status and additional header information. In both cases, the header
is filled automatically depending on the response side. On the other hand, trying to set some header with
an input stream bound to the response object might render the response object unusable.
Predicate
http-response-p
Inheritance
HttpProto
ConstructorsHttpResponse(none)
The HttpResponse constructor creates a default http response object. The response is marked valid
with a default text/plain media type.
HttpResponse(Integer)
The HttpResponse constructor creates a http response object with a status code. The response code
is associated with the default text/plain media type.
HttpResponse(InputStream)
The HttpResponse constructor creates a http response object with a specific input stream. At
construction, the response header is cleared and the input stream is bound to the object.
HttpResponse(IntegerString)
The HttpResponse constructor creates a http response object with a status code and a media type.
The first argument is the status code. The second argument is the associated media type.
Methodsset-status-code->none(Integer)
The set-status-code method sets the response status code.
get-status-code->Integer(none)
The get-status-code method returns the response status code.
map-status-code->String(none)
The map-status-code method returns a string representation of the response status code.
status-ok-p->Boolean(none)
The status-ok-p predicate returns true if the response status code is valid (aka status 200).
status-error-p->Boolean(none)
The status-error-p predicate returns true if the response status code is an error code.
location-p->Boolean(none)
The location-p predicate returns true is the response status code indicates that a request should
be made at another location. The location can be found with the get-location method.
get-location->String(none)
The get-location method returns the location uri found in the response header. This method is
equivalent to a header query.
set-location->none(String)
The set-location method set the redirect location in the response header. The string argument is
the location uri.
set-cookie->none(Cookie)
The set-cookie method sets a cookie object to the http header. The cookie version is properly
handled by the method.
Cookie
The Cookie class is a special class designed to handle cookie setting within a http transaction. A cookie
is name/value pair that is set by the server and stored by the http client. Further connection with the
client will result with the cookie value transmitted by the client to the server. A cookie has various
parameters that controls its existence and behavior. The most important one is the cookie maximum age
that is defined in seconds. A null value tells the client to discard the cookie. A cookie without maximum
age is valid only during the http client session. A cookie can be added to the HttpReply object with the
set-cookie method. A cookie can be constructed with a name/value pair. An optional third argument is the
maximum age. The default cookie version is 1 as specified by RFC 2965. With a version 1, the maximum age
is interpreted as the number of seconds before the cookie expires. With version 0, the maximum age is the
absolute time.
Predicate
cookie-p
Inheritance
Object
ConstructorsCookie(StringString)
The Cookie constructor creates a cookie with a name value pair. The first argument is the cookie
name. The second argument is the cookie value.
Cookie(StringStringInteger)
The Cookie constructor creates a cookie with a name value pair and a maximum age. The first
argument is the cookie name. The second argument is the cookie value. The third argument is the
cookie maximum age.
Methodsget-version->Integer(none)
The get-version method returns the cookie version.
set-version->none(Integer)
The set-version method sets the cookie version. The version number can only be 0 or 1.
get-name->String(none)
The get-name method returns the cookie name. This is the name store on the http client.
set-name->none(String)
The set-name method sets the cookie name. This is the name store on the http client.
get-value->String(none)
The get-value method returns the cookie value. This is the value stored on the http client bounded
by the cookie name.
set-value->none(String)
The set-value method sets the cookie value. This is the value store on the http client bounded by
the cookie name.
get-maximum-age->Integer(none)
The get-maximum-age method returns the cookie maximum age. The default value is -1, that is, no
maximum age is set and the cookie is valid only for the http client session.
set-maximum-age->none(Integer)
The set-maximum-age method sets the cookie maximum age. A negative value is reset to -1. A 0 value
tells the http client to discard the cookie. A positive value tells the http client to store the
cookie for the remaining seconds.
get-path->String(none)
The get-path method returns the cookie path value. The path determines for which http request the
cookie is valid.
set-path->none(String)
The set-path method sets the cookie path value. The path determines for which http request the
cookie is valid.
get-domain->String(none)
The get-domain method returns the cookie domain value.
set-domain->none(String)
The set-domain method sets the cookie domain value. It is string recommended to use the originator
domain name since many http client can reject cookie those domain name does not match the
originator name.
get-port->Integer(none)
The get-port method returns the cookie port number.
set-port->none(Integer)
The set-port method sets the cookie port number. This value is not used with a cookie version 0.
get-comment->String(none)
The get-comment method returns the cookie comment value.
set-comment->none(String)
The set-comment method sets the cookie comment value.
get-comment-url->String(none)
The get-comment-url method returns the cookie comment url value.
set-comment-url->none(String)
The set-comment-url method sets the cookie comment url value. This value is not used with cookie
version 0.
get-discard->Boolean(none)
The get-discard method returns the cookie discard flag.
set-discard->none(Boolean)
The set-discard method sets the cookie discard flag. The discard flag the tells the user agent to
destroy the cookie when it terminates. This value is not used with cookie version 0.
get-secure->Boolean(none)
The get-secure method returns the cookie secure flag.
set-secure->none(Boolean)
The set-secure method sets the cookie secure flag. When a cookie is secured, it is only returned
by the http client if a connection has been secured (i.e use https).
to-string->String(none)
The to-string method returns a string formatted for the http reply header. Normally this method
should not be called since the set-cookie method of the httpReply takes care of such thing.
Session
The Session class is a class that defines a session to be associated with a transaction. The session
object is designed to be persistent so that its data information can be retreived at any time. A session
object has also the particularity to have a limited lifetime. A session object is created by name with an
identifier. The session object is designed to hold a variety of parameters that are suitable for both the
authentication and the session lifetime. A session is primarily defined by name with an optional
information string. The session is generally associated an authentication visa which contains the session
identity. The visa provides a secure mechanism compatible with a single sign on session. A session key is
automatically generated when the session is created. Such key is used to generate a session hash id which
can be used as a cookie value. The cookie name is also stored in the session object. When a cookie is
generated, the session hash name is combined with the session hash id for the cookie production.
Predicate
session-p
Inheritance
Taggable
ConstructorsSession(String)
The Session constructor creates a session by name. The string argument is the session name.
Session(StringString)
The Session constructor creates a session with a name and a user. The first argument is the
session name. The second argument is the session information..
Session(StringStringInteger)
The Session constructor creates a session with a name, a user and a maximum age. The first
argument is the session name. The second argument is the session informartion. The third argument
is the session maximum age expressed in seconds.
Methodsexpire-p->Boolean(none)
The expire-p predicate returns true if the session has expired.
set-hash-id->none(String)
The set-hash-id method sets the session hash identifier. The session hash id must be unique and
secured enough so that the session name cannot be derived from it.
get-hash-id->String(none)
The get-hash-id method returns the session hash identifier.
set-path->none(String)
The set-path method sets the session path.
get-path->String(none)
The get-path method returns the session path.
get-max-age->Integer(none)
The get-max-age method returns the session maximum age.
set-max-age->none(Integer)
The set-max-age method sets the session maximum age. The maximum age is an integer in seconds
relative to the current time. If the maximum age is set to 0, the session is closed.
get-remaining-time->Integer(none)
The get-remaining-time method returns the remaining valid session time.
get-expire-time->Integer(none)
The get-expire-time method returns the session expiration time in seconds. The expiration time is
an absolute time.
set-expire-time->none(Integer)
The set-expire-time method sets the session expiration time. The expiration time is an absolute
time in seconds.
get-creation-time->Integer(none)
The get-creation-time method returns the session creation time. The creation time is an absolute
time in seconds.
get-modification-time->Integer(none)
The get-modification-time method returns the session creation time. The modification time is an
absolute time in seconds.
get-cookie->Cookie(name)
The get-cookie method bakes a session cookie. The string argument is the cookie name those value
is the session hash id value.
close->Cookie(name)
The close method close a session by reseting the session maximum age to 0. The method returns a
cookie that can be used for closing the session on the peer side. The string argument is the
cookie name those value is the session hash id value.
Functionsmime-extension-p->Boolean(String)
The mime-extension-p predicates returns true if a media type extension - mime extension - is
defined. Most of the time, media type extension can be seen as a file extension.
mime-value-p->Boolean(String)
The mime-value-p predicates returns true if a media type - mime value - is defined.
extension-to-mime->String(String[Boolean])
The extension-to-mime function converts a media type extension into a media type. In the first
form, without a second argument, if the media type extension does not exist, an exception is
raised. In the second form, with the second argument set to true, if the media type extension does
not exist, the default media type is returned. If the flag is set to false, an exception is raised
like the first form.
string-uri-p->Boolean(String)
The string-uri-p predicates returns true if the string argument is a uri.
normalize-uri-name->String(String)
The normalize-uri-name function normalizes the string argument by adding a uri scheme if missing
in the original string. If the function detects that the name starts with a host name, the "http"
scheme is added. If the function detects that the string starts with a path, the "file" scheme is
added. otherwise, the name argument is left untouched.
system-uri-name->String(String)
The system-uri-name function normalizes the string argument by prioritizing the system name. The
function attempts to find a file that match the string argument and eventually build a uri file
scheme. If the file is not fond, the normalization process occurs with the normalize-uri-name
function.
path-uri-name->String(String)
The path-uri-name function normalizes the string argument by extracting a path associated with the
uri string. If the string is a valid uri string, the path is the uri path component. If the uri
path is empty, it is normalized to a /. If the string argument is not a uri string, the string is
assumed to be a partial uri and both query and fragment parts are removed if present.
normalize-uri-host->String(String)
The normalize-uri-host function normalizes the string argument uri host name. This function is
useful with certain class of host representation which uses extra characters.
normalize-uri-port->String(String)
The normalize-uri-port function normalizes the string argument uri port value. This function is
useful with certain class of host representation which uses extra characters.
AFNIX Module AFNIX nwg(3)