diff options
Diffstat (limited to 'lib/inets/doc/src/httpd_util.xml')
-rw-r--r-- | lib/inets/doc/src/httpd_util.xml | 459 |
1 files changed, 459 insertions, 0 deletions
diff --git a/lib/inets/doc/src/httpd_util.xml b/lib/inets/doc/src/httpd_util.xml new file mode 100644 index 0000000000..1566ee29d1 --- /dev/null +++ b/lib/inets/doc/src/httpd_util.xml @@ -0,0 +1,459 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE erlref SYSTEM "erlref.dtd"> + +<erlref> + <header> + <copyright> + <year>1997</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>httpd_util</title> + <prepared>Joakim Grebenö</prepared> + <docno></docno> + <date>1997-10-14</date> + <rev>2.2</rev> + <file>httpd_util.sgml</file> + </header> + <module>httpd_util</module> + <modulesummary>Miscellaneous utility functions to be used when implementing Erlang Web server API modules.</modulesummary> + <description> + <p>This module provides the Erlang Web Server API module + programmer with miscellaneous utility functions.</p> + + <marker id="convert_request_date"></marker> + </description> + + <funcs> + <func> + <name>convert_request_date(DateString) -> ErlDate|bad_date</name> + <fsummary>Convert The the date to the Erlang date format.</fsummary> + <type> + <v>DateString = string()</v> + <v>ErlDate = {{Year,Month,Date},{Hour,Min,Sec}}</v> + <v>Year = Month = Date = Hour = Min = Sec = integer()</v> + </type> + <desc> + <p><c>convert_request_date/1</c> converts <c>DateString</c> to + the Erlang date format. DateString must be in one of the three + date formats that is defined in the RFC 2616.</p> + + <marker id="create_etag"></marker> + </desc> + </func> + + <func> + <name>create_etag(FileInfo) -> Etag</name> + <fsummary>Calculates the Etag for a file.</fsummary> + <type> + <v>FileInfo = file_info()</v> + <v>Etag = string()</v> + </type> + <desc> + <p><c>create_etag/1</c> calculates the Etag for a file, from it's + size and time for last modification. fileinfo is a record defined + in <c>kernel/include/file.hrl</c></p> + + <marker id="decode_hex"></marker> + </desc> + </func> + + <func> + <name>decode_hex(HexValue) -> DecValue</name> + <fsummary>Convert a hex value into its decimal equivalent.</fsummary> + <type> + <v>HexValue = DecValue = string()</v> + </type> + <desc> + <p>Converts the hexadecimal value <c>HexValue</c> into it's + decimal equivalent (<c>DecValue</c>).</p> + + <marker id="day"></marker> + </desc> + </func> + + <func> + <name>day(NthDayOfWeek) -> DayOfWeek</name> + <fsummary>Convert the day of the week (integer [1-7]) to an abbreviated string.</fsummary> + <type> + <v>NthDayOfWeek = 1-7</v> + <v>DayOfWeek = string()</v> + </type> + <desc> + <marker id="day"></marker> + <p><c>day/1</c> converts the day of the week + (<c>NthDayOfWeek</c>) as an integer (1-7) to an abbreviated + string, that is: </p> + <p>1 = "Mon", 2 = "Tue", ..., 7 = "Sat".</p> + + <marker id="flatlength"></marker> + </desc> + </func> + + <func> + <name>flatlength(NestedList) -> Size</name> + <fsummary>Compute the size of a possibly nested list.</fsummary> + <type> + <v>NestedList = list()</v> + <v>Size = integer()</v> + </type> + <desc> + <marker id="flatlength"></marker> + <p><c>flatlength/1</c> computes the size of the possibly nested + list <c>NestedList</c>. Which may contain binaries.</p> + + <marker id="hexlist_to_integer"></marker> + </desc> + </func> + +<!-- + <func> + <name>header(StatusCode,PersistentConn)</name> + <name>header(StatusCode,Date)</name> + <name>header(StatusCode,MimeType,Date)</name> + <name>header(StatusCode,MimeType,PersistentConn,Date) -> HTTPHeader</name> + <fsummary>Generate a HTTP 1.1 header.</fsummary> + <type> + <v>StatusCode = integer()</v> + <v>Date = rfc1123_date()</v> + <v>MimeType = string()</v> + <v>PersistentConn = true | false</v> + </type> + <desc> + <marker id="header"></marker> + <p><c>header</c> returns a HTTP 1.1 header string. The + <c>StatusCode</c> is one of the status codes defined in RFC + 2616 and the <c>Date</c> string is RFC 1123 + compliant. (See <seealso marker="#rfc1123_date">rfc1123_date/0</seealso>). + </p> + <p>Note that the two version of <c>header/n</c> that does not + has a <c>PersistentConn</c> argument is there only for + backward compatibility, and must not be used in new Erlang + Webserver API modules. that will support persistent + connections.</p> + + <marker id="hexlist_to_integer"></marker> + </desc> + </func> +--> + + <func> + <name>hexlist_to_integer(HexString) -> Number</name> + <fsummary>Convert a hexadecimal string to an integer.</fsummary> + <type> + <v>Number = integer()</v> + <v>HexString = string()</v> + </type> + <desc> + <p><c>hexlist_to_integer</c> Convert the Hexadecimal value of + HexString to an integer.</p> + + <marker id="integer_to_hexlist"></marker> + </desc> + </func> + + <func> + <name>integer_to_hexlist(Number) -> HexString</name> + <fsummary>Convert an integer to a hexadecimal string.</fsummary> + <type> + <v>Number = integer()</v> + <v>HexString = string()</v> + </type> + <desc> + <marker id="integer_to_hexlist"></marker> + <p><c>integer_to_hexlist/1</c> Returns a string that represents + the Number in a Hexadecimal form.</p> + + <marker id="lookup"></marker> + </desc> + </func> + + <func> + <name>lookup(ETSTable,Key) -> Result</name> + <name>lookup(ETSTable,Key,Undefined) -> Result</name> + <fsummary>Extract the first value associated with a key in an ETS table.</fsummary> + <type> + <v>ETSTable = ets_table()</v> + <v>Key = term()</v> + <v>Result = term() | undefined | Undefined</v> + <v>Undefined = term()</v> + </type> + <desc> + <p><c>lookup</c> extracts <c>{Key,Value}</c> tuples from + <c>ETSTable</c> and returns the <c>Value</c> associated + with <c>Key</c>. If <c>ETSTable</c> is of type <c>bag</c> + only the first <c>Value</c> associated with <c>Key</c> is + returned. <c>lookup/2</c> returns <c>undefined</c> and + <c>lookup/3</c> returns <c>Undefined</c> if no <c>Value</c> + is found.</p> + + <marker id="lookup_mime"></marker> + </desc> + </func> + + <func> + <name>lookup_mime(ConfigDB,Suffix)</name> + <name>lookup_mime(ConfigDB,Suffix,Undefined) -> MimeType</name> + <fsummary>Return the mime type associated with a specific file suffix. </fsummary> + <type> + <v>ConfigDB = ets_table()</v> + <v>Suffix = string()</v> + <v>MimeType = string() | undefined | Undefined</v> + <v>Undefined = term()</v> + </type> + <desc> + <marker id="lookup_mime"></marker> + <p><c>lookup_mime</c> returns the mime type associated with a + specific file suffix as specified in the <c>mime.types</c> + file (located in the <path unix="$SERVER_ROOT/conf/mime.types" windows="%SERVER_ROOT%\\\\conf\\\\mime.types">config directory</path>).</p> + + <marker id="lookup_mime_default"></marker> + </desc> + </func> + + <func> + <name>lookup_mime_default(ConfigDB,Suffix)</name> + <name>lookup_mime_default(ConfigDB,Suffix,Undefined) -> MimeType</name> + <fsummary>Return the mime type associated with a specific file suffix or the value of the DefaultType.</fsummary> + <type> + <v>ConfigDB = ets_table()</v> + <v>Suffix = string()</v> + <v>MimeType = string() | undefined | Undefined</v> + <v>Undefined = term()</v> + </type> + <desc> + <marker id="lookup_mime_default"></marker> + <p><c>lookup_mime_default</c> returns the mime type associated + with a specific file suffix as specified in the + <c>mime.types</c> file (located in the + <path unix="$SERVER_ROOT/conf/mime.types" windows="%SERVER_ROOT%\\\\conf\\\\mime.types">config directory</path>). + If no appropriate association can be found + the value of DefaultType is + returned.</p> + + <marker id="message"></marker> + </desc> + </func> + + <func> + <name>message(StatusCode,PhraseArgs,ConfigDB) -> Message</name> + <fsummary>Return an informative HTTP 1.1 status string in HTML.</fsummary> + <type> + <v>StatusCode = 301 | 400 | 403 | 404 | 500 | 501 | 504</v> + <v>PhraseArgs = term()</v> + <v>ConfigDB = ets_table</v> + <v>Message = string()</v> + </type> + <desc> + <marker id="message"></marker> + <p><c>message/3</c> returns an informative HTTP 1.1 status + string in HTML. Each <c>StatusCode</c> requires a specific + <c>PhraseArgs</c>: + </p> + <taglist> + <tag><c>301</c></tag> + <item><c>string()</c>: A URL pointing at the new document + position.</item> + <tag><c>400 | 401 | 500</c></tag> + <item><c>none</c> (No <c>PhraseArgs</c>)</item> + <tag><c>403 | 404</c></tag> + <item><c>string()</c>: A <c>Request-URI</c> as described in + RFC 2616.</item> + <tag><c>501</c></tag> + <item><c>{Method,RequestURI,HTTPVersion}</c>: The HTTP + <c>Method</c>, <c>Request-URI</c> and <c>HTTP-Version</c> + as defined in RFC 2616.</item> + <tag><c>504</c></tag> + <item><c>string()</c>: A string describing why the service + was unavailable.</item> + </taglist> + + <marker id="month"></marker> + </desc> + </func> + + <func> + <name>month(NthMonth) -> Month</name> + <fsummary>Convert the month as an integer (1-12) to an abbreviated string.</fsummary> + <type> + <v>NthMonth = 1-12</v> + <v>Month = string()</v> + </type> + <desc> + <marker id="month"></marker> + <p><c>month/1</c> converts the month <c>NthMonth</c> as an + integer (1-12) to an abbreviated string, that is: </p> + <p>1 = "Jan", 2 = "Feb", ..., 12 = "Dec".</p> + + <marker id="multi_lookup"></marker> + </desc> + </func> + + <func> + <name>multi_lookup(ETSTable,Key) -> Result</name> + <fsummary>Extract the values associated with a key in a ETS table.</fsummary> + <type> + <v>ETSTable = ets_table()</v> + <v>Key = term()</v> + <v>Result = [term()]</v> + </type> + <desc> + <p><c>multi_lookup</c> extracts all <c>{Key,Value}</c> tuples + from an <c>ETSTable</c> and returns <em>all</em><c>Values</c> associated with the <c>Key</c> in a list.</p> + + <marker id="reason phrase"></marker> + </desc> + </func> + + <func> + <name>reason_phrase(StatusCode) -> Description</name> + <fsummary>Return the description of an HTTP 1.1 status code.</fsummary> + <type> + <v>StatusCode = 100| 200 | 201 | 202 | 204 | 205 | 206 | 300 | 301 | 302 | 303 | 304 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 410 411 | 412 | 413 | 414 415 | 416 | 417 | 500 | 501 | 502 | 503 | 504 | 505</v> + <v>Description = string()</v> + </type> + <desc> + <p><c>reason_phrase</c> returns the <c>Description</c> of an + HTTP 1.1 <c>StatusCode</c>, for example 200 is "OK" and 201 + is "Created". Read RFC 2616 for further information.</p> + + <marker id="rfc1123_date"></marker> + </desc> + </func> + + <func> + <name>rfc1123_date() -> RFC1123Date</name> + <name>rfc1123_date({{YYYY,MM,DD},{Hour,Min,Sec}}}) -> RFC1123Date</name> + <fsummary>Return the current date in RFC 1123 format.</fsummary> + <type> + <v>YYYY = MM = DD = Hour = Min =Sec = integer()</v> + <v>RFC1123Date = string()</v> + </type> + <desc> + <marker id="rfc1123_date"></marker> + <p><c>rfc1123_date/0</c> returns the current date in RFC 1123 + format. <c>rfc_date/1</c> converts the date in the Erlang format + to the RFC 1123 date format.</p> + + <marker id="split"></marker> + </desc> + </func> + + <func> + <name>split(String,RegExp,N) -> SplitRes</name> + <fsummary>Split a string in N chunks using a regular expression.</fsummary> + <type> + <v>String = RegExp = string()</v> + <v>SplitRes = {ok, FieldList} | {error, errordesc()}</v> + <v>Fieldlist = [string()]</v> + <v>N = integer</v> + </type> + <desc> + <marker id="split"></marker> + <p><c>split/3</c> splits the <c>String</c> in <c>N</c> chunks + using the <c>RegExp</c>. <c>split/3</c> is is equivalent to + <c>regexp:split/2</c> with one exception, that is <c>N</c> + defines the number of maximum number of fields in the + <c>FieldList</c>.</p> + + <marker id="split_script_path"></marker> + </desc> + </func> + + <func> + <name>split_script_path(RequestLine) -> Splitted</name> + <fsummary>Split a <c>RequestLine</c>in a file reference to an executable and a<c>QueryString</c>or a <c>PathInfo</c>string.</fsummary> + <type> + <v>RequestLine = string()</v> + <v>Splitted = not_a_script | {Path, PathInfo, QueryString}</v> + <v>Path = QueryString = PathInfo = string()</v> + </type> + <desc> + <marker id="split_script_path"></marker> + <p><c>split_script_path/1</c> is equivalent to + <c>split_path/1</c> with one exception. If the longest + possible path is not a regular, accessible and executable + file <c>not_a_script</c> is returned.</p> + + <marker id="split_path"></marker> + </desc> + </func> + + <func> + <name>split_path(RequestLine) -> {Path,QueryStringOrPathInfo}</name> + <fsummary>Split a <c>RequestLine</c>in a file reference and a <c>QueryString</c>or a<c>PathInfo</c>string.</fsummary> + <type> + <v>RequestLine = Path = QueryStringOrPathInfo = string()</v> + </type> + <desc> + <marker id="split_path"></marker> + <p><c>split_path/1</c> splits the <c>RequestLine</c> in a file + reference (<c>Path</c>) and a <c>QueryString</c> or a + <c>PathInfo</c> string as specified in RFC 2616. A + <c>QueryString</c> is isolated from the <c>Path</c> with a + question mark (<c>?</c>) and <c>PathInfo</c> with a slash + (/). In the case of a <c>QueryString</c>, everything before + the <c>?</c> is a <c>Path</c> and everything after a + <c>QueryString</c>. In the case of a <c>PathInfo</c> the + <c>RequestLine</c> is scanned from left-to-right on the hunt + for longest possible <c>Path</c> being a file or a + directory. Everything after the longest possible + <c>Path</c>, isolated with a <c>/</c>, is regarded as + <c>PathInfo</c>. The resulting <c>Path</c> is decoded using + <c>decode_hex/1</c> before delivery.</p> + + <marker id="strip"></marker> + </desc> + </func> + + <func> + <name>strip(String) -> Stripped</name> + <fsummary>Returns String where the leading and trailing space and tabs has been removed.</fsummary> + <type> + <v>String = Stripped = string()</v> + </type> + <desc> + <marker id="strip"></marker> + <p><c>strip/1</c> removes any leading or trailing linear white + space from the string. Linear white space should be read as + horizontal tab or space.</p> + + <marker id="suffix"></marker> + </desc> + </func> + + <func> + <name>suffix(FileName) -> Suffix</name> + <fsummary>Extract the file suffix from a given filename.</fsummary> + <type> + <v>FileName = Suffix = string()</v> + </type> + <desc> + <marker id="suffix"></marker> + <p><c>suffix/1</c> is equivalent to + <c>filename:extension/1</c> with one exception, that is + <c>Suffix</c> is returned without a leading dot (<c>.</c>). </p> + </desc> + </func> + </funcs> + + <section> + <marker id="see_also"></marker> + <title>SEE ALSO</title> + <p><seealso marker="httpd">httpd(3)</seealso></p> + </section> + +</erlref> |