|
|
@ -1,140 +0,0 @@ |
|
|
|
%%% ---------------------------------------------------------------------------- |
|
|
|
%%% 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()}. |