Erlang -- httpd_util

User's Guide
Reference Manual
Release Notes
PDF
Top

inets
Reference Manual
Version 5.9.1

Expand All
Contract All

Table of Contents

- inets
  - Top of manual page
  - services/0
  - services_info/0
  - service_names/0
  - start/0
  - start/1
  - stop/0
  - start/2
  - start/3
  - stop/2
- ftp
  - Top of manual page
  - account/2
  - append/2
  - append/3
  - append_bin/3
  - append_chunk/2
  - append_chunk_start/2
  - append_chunk_end/1
  - cd/2
  - close/1
  - delete/2
  - formaterror/1
  - lcd/2
  - lpwd/1
  - ls/1
  - ls/2
  - mkdir/2
  - nlist/1
  - nlist/2
  - open/1
  - open/2
  - pwd/1
  - pwd/1
  - recv/2
  - recv/3
  - recv_bin/2
  - recv_chunk_start/2
  - recv_chunk/1
  - rename/3
  - rmdir/2
  - send/2
  - send/3
  - send_bin/3
  - send_chunk/2
  - send_chunk_start/2
  - send_chunk_end/1
  - type/2
  - user/3
  - user/4
  - quote/2
- tftp
  - Top of manual page
  - start/1
  - read_file/3
  - write_file/3
  - info/1
  - info/1
  - info/1
  - change_config/2
  - change_config/2
  - change_config/2
  - start/0
  - prepare/6
  - open/6
  - read/1
  - write/2
  - abort/3
  - error_msg/2
  - warning_msg/2
  - info_msg/2
- httpc
  - Top of manual page
  - request/1
  - request/2
  - request/4
  - request/5
  - cancel_request/1
  - cancel_request/2
  - set_options/1
  - set_options/2
  - get_options/1
  - get_options/2
  - stream_next/1
  - store_cookies/2
  - store_cookies/3
  - cookie_header/1
  - cookie_header/2
  - cookie_header/3
  - reset_cookies/0
  - reset_cookies/1
  - which_cookies/0
  - which_cookies/1
  - which_sessions/0
  - which_sessions/1
  - info/0
  - info/1
- httpd
  - Top of manual page
  - info/1
  - info/2
  - info/2
  - info/3
  - reload_config/2
  - Module:do/1
  - Module:load/2
  - Module:store/2
  - Module:remove/1
  - parse_query/1
- httpd_conf
  - Top of manual page
  - check_enum/2
  - clean/1
  - custom_clean/3
  - is_directory/1
  - is_file/1
  - make_integer/1
- httpd_socket
  - Top of manual page
  - deliver/3
  - peername/2
  - resolve/0
- httpd_util
  - Top of manual page
  - convert_request_date/1
  - create_etag/1
  - decode_hex/1
  - day/1
  - flatlength/1
  - hexlist_to_integer/1
  - integer_to_hexlist/1
  - lookup/2
  - lookup/3
  - lookup_mime/2
  - lookup_mime/3
  - lookup_mime_default/2
  - lookup_mime_default/3
  - message/3
  - month/1
  - multi_lookup/2
  - reason_phrase/1
  - rfc1123_date/0
  - rfc1123_date/2
  - split/3
  - split_script_path/1
  - split_path/1
  - strip/1
  - suffix/1
- mod_alias
  - Top of manual page
  - default_index/2
  - path/3
  - real_name/3
  - real_script_name/3
- mod_auth
  - Top of manual page
  - add_user/2
  - add_user/5
  - add_user/6
  - delete_user/2
  - delete_user/3
  - delete_user/4
  - get_user/2
  - get_user/3
  - get_user/4
  - list_users/1
  - list_users/2
  - list_users/3
  - add_group_member/3
  - add_group_member/4
  - add_group_member/5
  - delete_group_member/3
  - delete_group_member/4
  - delete_group_member/5
  - list_group_members/2
  - list_group_members/3
  - list_group_members/4
  - list_groups/1
  - list_groups/2
  - list_groups/3
  - delete_group/2
  - delete_group/4
  - update_password/5
  - update_password/6
- mod_esi
  - Top of manual page
  - deliver/2
  - Module:Function/3
  - Module:Function/2
- mod_security
  - Top of manual page
  - list_auth_users/1
  - list_auth_users/2
  - list_auth_users/2
  - list_auth_users/3
  - list_blocked_users/1
  - list_blocked_users/2
  - list_blocked_users/2
  - list_blocked_users/3
  - block_user/4
  - block_user/5
  - unblock_user/2
  - unblock_user/3
  - unblock_user/3
  - unblock_user/4
  - event/4
  - event/5
- http_uri
  - Top of manual page
  - scheme_defaults/0
  - parse/1
  - parse/2
  - encode/1
  - decode/1

# httpd_util

### MODULE

httpd_util

### MODULE SUMMARY

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 its 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 its 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.

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).

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). 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 horizontal 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)