httpd_util(3)

MODULE
httpd_util - Miscellaneous utility functions to be used when implementing Erlang Web server API modules.

DESCRIPTION

This module provides the Erlang Web Server API module programmer with miscellaneous utility functions.

EXPORTS

convert_request_date(DateString) -> ErlDate|bad_date

    Types
        DateString = string()
        ErlDate = {{Year, Month, Date}, {Hour, Min, Sec}}
        Year = Month = Date = Hour = Min = Sec = integer()

    convert_request_date/1 converts DateString to the Erlang date format. DateString must be in one of the three date formats that is defined in the RFC 2616.

create_etag(FileInfo) -> Etag

    Types
        FileInfo = file_info()
        Etag = string()

    create_etag/1 calculates the Etag for a file, from it's size and time for last modification. fileinfo is a record defined in kernel/include/file.hrl

decode_hex(HexValue) -> DecValue

    Types
        HexValue = DecValue = string()

    Converts the hexadecimal value HexValue into it's decimal equivalent (DecValue).

day(NthDayOfWeek) -> DayOfWeek

    Types
        NthDayOfWeek = 1-7
        DayOfWeek = string()

    day/1 converts the day of the week (NthDayOfWeek) as an integer (1-7) to an abbreviated string, that is:

    1 = "Mon", 2 = "Tue", ..., 7 = "Sat".

flatlength(NestedList) -> Size

    Types
        NestedList = list()
        Size = integer()

    flatlength/1 computes the size of the possibly nested list NestedList. Which may contain binaries.

header(StatusCode,PersistentConn)
header(StatusCode,Date)
header(StatusCode,MimeType,Date)
header(StatusCode,MimeType,PersistentConn,Date) -> HTTPHeader

    Types
        StatusCode = integer()
        Date = rfc1123_date()
        MimeType = string()
        PersistentConn = true | false

    header returns a HTTP 1.1 header string. The StatusCode is one of the status codes defined in RFC 2616 and the Date string is RFC 1123 compliant. (See rfc1123_date/0).

    Note that the two version of header/n that does not has a PersistentConn argument is there only for backward compability, and must not be used in new Erlang Webserver API modules. that will support persistent connections.

hexlist_to_integer(HexString) -> Number

    Types
        Number = integer()
        HexString = string()

    hexlist_to_integer Convert the Hexadecimal value of HexString to an integer.

integer_to_hexlist(Number) -> HexString

    Types
        Number = integer()
        HexString = string()

    integer_to_hexlist/1 Returns a string that represents the Number in a Hexadecimal form.

lookup(ETSTable,Key) -> Result
lookup(ETSTable,Key,Undefined) -> Result

    Types
        ETSTable = ets_table()
        Key = term()
        Result = term() | undefined | Undefined
        Undefined = term()

    lookup extracts {Key, Value} tuples from ETSTable and returns the Value associated with Key. If ETSTable is of type bag only the first Value associated with Key is returned. lookup/2 returns undefined and lookup/3 returns Undefined if no Value is found.

lookup_mime(ConfigDB,Suffix)
lookup_mime(ConfigDB,Suffix,Undefined) -> MimeType

    Types
        ConfigDB = ets_table()
        Suffix = string()
        MimeType = string() | undefined | Undefined
        Undefined = term()

    lookup_mime returns the mime type associated with a specific file suffix as specified in the mime.types file (located in the config directory($SERVER_ROOT/conf/mime.types)).

lookup_mime_default(ConfigDB,Suffix)
lookup_mime_default(ConfigDB,Suffix,Undefined) -> MimeType

    Types
        ConfigDB = ets_table()
        Suffix = string()
        MimeType = string() | undefined | Undefined
        Undefined = term()

    lookup_mime_default returns the mime type associated with a specific file suffix as specified in the mime.types file (located in the config directory($SERVER_ROOT/conf/mime.types)). If no appropriate association can be found the value of DefaultType is returned.

message(StatusCode,PhraseArgs,ConfigDB) -> Message

    Types
        StatusCode = 301 | 400 | 403 | 404 | 500 | 501 | 504
        PhraseArgs = term()
        ConfigDB = ets_table
        Message = string()

    message/3 returns an informative HTTP 1.1 status string in HTML. Each StatusCode requires a specific PhraseArgs:

        301:
            string(): A URL pointing at the new document position.

        400 | 401 | 500:
            none (No PhraseArgs)

        403 | 404:
            string(): A Request-URI as described in RFC 2616.

        501:
            {Method, RequestURI, HTTPVersion}: The HTTP Method, Request-URI and HTTP-Version as defined in RFC 2616.

        504:
            string(): A string describing why the service was unavailable.

month(NthMonth) -> Month

    Types
        NthMonth = 1-12
        Month = string()

    month/1 converts the month NthMonth as an integer (1-12) to an abbreviated string, that is:

    1 = "Jan", 2 = "Feb", ..., 12 = "Dec".

multi_lookup(ETSTable,Key) -> Result

    Types
        ETSTable = ets_table()
        Key = term()
        Result = [term()]

    multi_lookup extracts all {Key, Value} tuples from an ETSTable and returns allValues associated with the Key in a list.

reason_phrase(StatusCode) -> Description

    Types
        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
        Description = string()

    reason_phrase returns the Description of an HTTP 1.1 StatusCode, for example 200 is "OK" and 201 is "Created". Read RFC 2616 for further information.

rfc1123_date() -> RFC1123Date
rfc1123_date({{YYYY,MM,DD},{Hour,Min,Sec}}}) -> RFC1123Date

    Types
        YYYY = MM = DD = Hour = Min =Sec = integer()
        RFC1123Date = string()

    rfc1123_date/0 returns the current date in RFC 1123 format. rfc_date/1 converts the date in the Erlang format to the RFC 1123 date format.

split(String,RegExp,N) -> SplitRes

    Types
        String = RegExp = string()
        SplitRes = {ok, FieldList} | {error, errordesc()}
        Fieldlist = [string()]
        N = integer

    split/3 splits the String in N chunks using the RegExp. split/3 is is equivalent to regexp:split/2 with one exception, that is N defines the number of maximum number of fields in the FieldList.

split_script_path(RequestLine) -> Splitted

    Types
        RequestLine = string()
        Splitted = not_a_script | {Path, PathInfo, QueryString}
        Path = QueryString = PathInfo = string()

    split_script_path/1 is equivalent to split_path/1 with one exception. If the longest possible path is not a regular, accessible and executable file not_a_script is returned.

split_path(RequestLine) -> {Path,QueryStringOrPathInfo}

    Types
        RequestLine = Path = QueryStringOrPathInfo = string()

    split_path/1 splits the RequestLine in a file reference (Path) and a QueryString or a PathInfo string as specified in RFC 2616. A QueryString is isolated from the Path with a question mark (?) and PathInfo with a slash (/). In the case of a QueryString, everything before the ? is a Path and everything after a QueryString. In the case of a PathInfo the RequestLine is scanned from left-to-right on the hunt for longest possible Path being a file or a directory. Everything after the longest possible Path, isolated with a /, is regarded as PathInfo. The resulting Path is decoded using decode_hex/1 before delivery.

strip(String) -> Stripped

    Types
        String = Stripped = string()

    strip/1 removes any leading or trailing linear white space from the string. Linear white space should be read as horisontal tab or space.

suffix(FileName) -> Suffix

    Types
        FileName = Suffix = string()

    suffix/1 is equivalent to filename:extension/1 with one exception, that is Suffix is returned without a leading dot (.).

SEE ALSO

httpd(3)