summaryrefslogtreecommitdiff
path: root/src/rebar_utils.erl
diff options
context:
space:
mode:
authorCarlosEDP <me@carlosedp.com>2015-07-01 14:13:43 -0300
committerCarlosEDP <me@carlosedp.com>2015-07-03 16:40:25 -0300
commit8de84f1af04a716357dbc5473f7daf74cb31f44a (patch)
tree5a29a4dd0dc8fcd413424d9a266031732fdc822e /src/rebar_utils.erl
parent9906fdc25e3769d07b0de78a18501c7a681e6dc9 (diff)
Added support for proxy on rebar3 based on environment variables.
Diffstat (limited to 'src/rebar_utils.erl')
-rw-r--r--src/rebar_utils.erl54
1 files changed, 53 insertions, 1 deletions
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index 0cbc7c2..35964ea 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -56,7 +56,8 @@
wordsize/0,
tup_umerge/2,
tup_sort/1,
- line_count/1]).
+ line_count/1,
+ set_httpc_options/0]).
%% for internal use only
-export([otp_release/0]).
@@ -661,3 +662,54 @@ maybe_ends_in_comma(H) ->
"," ++ Flag -> lists:reverse(Flag);
_ -> false
end.
+
+set_httpc_options() ->
+ %% Get http_proxy and https_proxy environment variables
+ case os:getenv("http_proxy") of
+ false ->
+ Http = "";
+ Http ->
+ Http
+ end,
+ case os:getenv("https_proxy") of
+ false ->
+ Https = "";
+ Https ->
+ Https
+ end,
+
+ %% Parse the variables to extract host and port
+ Opts = [],
+ case http_uri:parse(Http) of
+ {ok,{_, [], Host, Port, _, []}} ->
+ Opts1 = Opts ++ [{proxy, {{Host, Port}, []}}];
+ {error, _} ->
+ Opts1 = Opts
+ end,
+
+ case http_uri:parse(Https) of
+ {ok,{_, [], Host2, Port2, _, []}} ->
+ Opts2 = Opts1 ++ [{https_proxy, {{Host2, Port2}, []}}];
+ {error, _} ->
+ Opts2 = Opts1
+ end,
+
+ case Opts2 of
+ [] ->
+ Opts3 = [
+ {max_sessions, 4},
+ {max_keep_alive_length, 4},
+ {keep_alive_timeout, 120000},
+ {max_pipeline_length, 4},
+ {pipeline_timeout, 60000}
+ ];
+ _ ->
+ Opts3 = Opts2 ++ [
+ {max_sessions, 4},
+ {max_keep_alive_length, 4},
+ {keep_alive_timeout, 120000},
+ {max_pipeline_length, 4},
+ {pipeline_timeout, 60000}
+ ]
+ end,
+ httpc:set_options(Opts3).