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.
 

140 lines
4.3 KiB

%%% ----------------------------------------------------------------------------
%%% Copyright (c) 2009, Erlang Training and Consulting Ltd.
%%% All rights reserved.
%%%
%%% Redistribution and use in source and binary forms, with or without
%%% modification, are permitted provided that the following conditions are met:
%%% * Redistributions of source code must retain the above copyright
%%% notice, this list of conditions and the following disclaimer.
%%% * Redistributions in binary form must reproduce the above copyright
%%% notice, this list of conditions and the following disclaimer in the
%%% documentation and/or other materials provided with the distribution.
%%% * Neither the name of Erlang Training and Consulting Ltd. nor the
%%% names of its contributors may be used to endorse or promote products
%%% derived from this software without specific prior written permission.
%%%
%%% THIS SOFTWARE IS PROVIDED BY Erlang Training and Consulting Ltd. ''AS IS''
%%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
%%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
%%% ARE DISCLAIMED. IN NO EVENT SHALL Erlang Training and Consulting Ltd. BE
%%% LIABLE SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
%%% BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
%%% WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%% OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
%%% ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%% ----------------------------------------------------------------------------
-type header() ::
'Cache-Control' |
'Connection' |
'Date' |
'Pragma'|
'Transfer-Encoding' |
'Upgrade' |
'Via' |
'Accept' |
'Accept-Charset'|
'Accept-Encoding' |
'Accept-Language' |
'Authorization' |
'From' |
'Host' |
'If-Modified-Since' |
'If-Match' |
'If-None-Match' |
'If-Range'|
'If-Unmodified-Since' |
'Max-Forwards' |
'Proxy-Authorization' |
'Range'|
'Referer' |
'User-Agent' |
'Age' |
'Location' |
'Proxy-Authenticate'|
'Public' |
'Retry-After' |
'Server' |
'Vary' |
'Warning'|
'Www-Authenticate' |
'Allow' |
'Content-Base' |
'Content-Encoding'|
'Content-Language' |
'Content-Length' |
'Content-Location'|
'Content-Md5' |
'Content-Range' |
'Content-Type' |
'Etag'|
'Expires' |
'Last-Modified' |
'Accept-Ranges' |
'Set-Cookie'|
'Set-Cookie2' |
'X-Forwarded-For' |
'Cookie' |
'Keep-Alive' |
'Proxy-Connection' |
binary() |
string().
-type headers() :: [{header(), iodata()}].
-type method() :: string() | atom().
-type pos_timeout() :: pos_integer() | 'infinity'.
-type bodypart() :: iodata() | 'http_eob'.
-type socket() :: _.
-type port_num() :: 1..65535.
-type poolsize() :: non_neg_integer() | atom().
-type invalid_option() :: any().
-type pool_id() :: pid() | atom().
-type destination() :: {string(), pos_integer(), boolean()}.
-type raw_headers() :: [{atom() | binary() | string(), binary() | string()}].
-type partial_download_option() ::
{'window_size', window_size()} |
{'part_size', non_neg_integer() | 'infinity'} |
invalid_option().
-type option() ::
{'connect_timeout', timeout()} |
{'send_retry', non_neg_integer()} |
{'partial_upload', non_neg_integer() | 'infinity'} |
{'partial_download', [partial_download_option()]} |
{'connect_options', socket_options()} |
{'proxy', string()} |
{'proxy_ssl_options', socket_options()} |
{'pool', pid() | atom()} |
invalid_option().
-type options() :: [option()].
-type host() :: string() | {integer(), integer(), integer(), integer()}.
-type http_status() :: {integer(), string() | binary()} | {'nil','nil'}.
-type socket_options() :: [{atom(), term()} | atom()].
-type window_size() :: non_neg_integer() | 'infinity'.
-type upload_state() :: {pid(), window_size()}.
-type body() :: binary() |
'undefined' | % HEAD request.
pid(). % When partial_download option is used.
-type result() ::
{ok, {{pos_integer(), string()}, headers(), body()}} |
{ok, upload_state()} |
{error, atom()}.