-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(), scheme :: undefined | binary(), host :: undefined | binary(), port :: undefined | 1..65535, path :: [binary()], args :: [{binary(), any()}], raw_path :: binary(), version :: wsHttp:version(), headers :: headers(), original_headers :: headers(), body :: body(), pid :: pid() }). -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()}].