You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

103 regels
2.7 KiB

-include_lib("eNet/include/eNet.hrl").
%% @type version(). HTTP version as a tuple, i.e. `{0, 9} | {1, 0} | {1, 1}'.
-type version() :: {0, 9} | {1, 0} | {1, 1}.
-export_type([version/0]).
-define(DefWsOpts, [
binary
, {packet, 4}
, {active, false}
, {reuseaddr, true}
, {nodelay, false}
, {delay_send, true}
, {send_timeout, 15000}
, {keepalive, true}
, {exit_on_close, true}
, {back_log, 1024}
]).
-export_type([wsOpt/0]).
-type wsOpt() ::
listenOpt() |
{wsMod, module()}.
-record(wsReq, {
method :: method(),
path :: binary(),
version :: wsHttp:version(),
scheme :: undefined | binary(),
host :: undefined | binary(),
port :: undefined | 1..65535,
args :: [{binary(), any()}],
headers :: headers(),
body = <<>> :: body()
}).
-export_type([req/0, method/0, body/0, headers/0, response_code/0]).
%% @type req(). A record representing an HTTP request.
-type req() :: #wsReq{}.
%% @type http_method(). An uppercase atom representing a known HTTP verb or a
%% binary for other verbs.
-type method() :: 'OPTIONS' | 'GET' | 'HEAD' | 'POST'| 'PUT' | 'DELETE' | 'TRACE' | binary().
%% @type body(). A binary or iolist.
-type body() :: binary() | iolist().
-type header() :: {Key :: binary(), Value :: binary() | string()}.
-type headers() :: [header()].
-type response_code() :: 100..999.
-define(EXAMPLE_CONF, [{callback, elli_example_callback}, {callback_args, []}]).
-define(CONTENT_LENGTH_HEADER, <<"content-length">>).
-define(EXPECT_HEADER, <<"expect">>).
-define(CONNECTION_HEADER, <<"connection">>).
-define(TRANSFER_ENCODING_HEADER, <<"Transfer-Encoding">>).
-export_type([callback/0, callback_mod/0, callback_args/0, event/0, result/0]).
%% @type callback(). A tuple of a {@type callback_mod()} and {@type
%% callback_args()}.
-type callback() :: {callback_mod(), callback_args()}.
%% @type callback_mod(). A callback module.
-type callback_mod() :: module().
%% @type callback_args(). Arguments to pass to a {@type callback_mod()}.
-type callback_args() :: list().
%% @type event(). Fired throughout processing a request.
%% See {@link elli_example_callback:handle_event/3} for descriptions.
-type event() ::
elli_startup|
bad_request |
file_error|
chunk_complete |
request_complete|
request_throw |
request_error |
request_exit|
request_closed |
request_parse_error|
client_closed |
client_timeout|
invalid_return.
-type result() ::
{elli:response_code() |ok, elli:headers(), {file, file:name_all()}|
{file, file:name_all(), wsUtil:range()}}|
{elli:response_code() | ok, elli:headers(), elli:body()}|
{elli:response_code() | ok, elli:body()}|
{chunk, elli:headers()}|
{chunk, elli:headers(), elli:body()}|
ignore.
-type sendfile_opts() :: [{chunk_size, non_neg_integer()}].