From 49825506dedf1018aab57dcef3f133db2912034f Mon Sep 17 00:00:00 2001 From: AICells <1713699517@qq.com> Date: Tue, 31 Dec 2019 19:26:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/agHttpCli.hrl | 81 +++++++++++++------ include/lhttpc.hrl | 34 -------- include/lhttpc_types.hrl | 140 --------------------------------- src/httpCli/agHttpProtocol.erl | 8 -- 4 files changed, 56 insertions(+), 207 deletions(-) delete mode 100644 include/lhttpc.hrl delete mode 100644 include/lhttpc_types.hrl diff --git a/include/agHttpCli.hrl b/include/agHttpCli.hrl index 84e4219..b1a543e 100644 --- a/include/agHttpCli.hrl +++ b/include/agHttpCli.hrl @@ -25,7 +25,6 @@ -define(GET_FROM_LIST(Key, List), agMiscUtils:getListValue(Key, List, undefined)). -define(GET_FROM_LIST(Key, List, Default), agMiscUtils:getListValue(Key, List, Default)). - -define(WARN(Tag, Format, Data), agMiscUtils:warnMsg(Tag, Format, Data)). -define(miDoNetConnect, miDoNetConnect). @@ -57,13 +56,6 @@ body = <<>> :: binary() }). --record(httpParam, { - headers = [] :: [binary()], - body = undefined :: undefined | binary(), - pid = self() :: pid(), - timeout = 1000 :: non_neg_integer() -}). - -record(reconnectState, { min :: non_neg_integer(), max :: non_neg_integer() | infinity, @@ -89,17 +81,10 @@ userPassword :: binary() }). --record(binPatterns, { - rn :: binary:cp(), - rnrn :: binary:cp() -}). - --type binPatterns() :: #binPatterns {}. -type miAgHttpCliRet() :: #miAgHttpCliRet{}. -type request() :: #request{}. -type requestRet() :: #requestRet{}. -type recvState() :: #recvState{}. --type httpParam() :: #httpParam{}. -type cliState() :: #cliState{}. -type reconnectState() :: #reconnectState{}. @@ -136,14 +121,60 @@ -type poolOpts() :: #poolOpts{}. -type agencyOpts() :: [agencyOpt()]. --record(dbUrl, { - host :: host(), - path :: path(), - port :: 0..65535, - hostname :: string(), - protocol :: protocol(), - poolName :: atom() %% 请求该URL用到的poolName -}). - --type dbUrl() :: #dbUrl{}. +%% http header 头 +%% -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(). diff --git a/include/lhttpc.hrl b/include/lhttpc.hrl deleted file mode 100644 index d7adb64..0000000 --- a/include/lhttpc.hrl +++ /dev/null @@ -1,34 +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. -%%% ---------------------------------------------------------------------------- - --record(lhttpc_url, { - host :: string(), - port :: integer(), - path :: string(), - is_ssl :: boolean(), - user = "" :: string(), - password = "" :: string() -}). diff --git a/include/lhttpc_types.hrl b/include/lhttpc_types.hrl deleted file mode 100644 index 0c2dc9e..0000000 --- a/include/lhttpc_types.hrl +++ /dev/null @@ -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()}. diff --git a/src/httpCli/agHttpProtocol.erl b/src/httpCli/agHttpProtocol.erl index 5e270d5..d89903f 100644 --- a/src/httpCli/agHttpProtocol.erl +++ b/src/httpCli/agHttpProtocol.erl @@ -9,16 +9,8 @@ , request/5 , response/1 , response/4 - , binPatterns/0 ]). --spec binPatterns() -> binPatterns(). -binPatterns() -> - #binPatterns{ - rn = binary:compile_pattern(<<"\r\n">>), - rnrn = binary:compile_pattern(<<"\r\n\r\n">>) - }. - %% <<"Content-Type: application/json; charset=utf-8">>, -spec request(method(), host(), path(), headers(), body()) -> iolist(). request(Method, Host, Path, Headers, undefined) ->