From 617a725ba54c53e180df62a8638b4f7382c1b72c Mon Sep 17 00:00:00 2001 From: Jon Harper Date: Thu, 31 Mar 2016 13:15:39 +0200 Subject: [PATCH] http.client, proxy defaults to http protocol like for the target --- basis/http/client/client-tests.factor | 16 ++++++++++++++++ basis/http/client/client.factor | 24 ++++++++++++------------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/basis/http/client/client-tests.factor b/basis/http/client/client-tests.factor index 0f4a36fb7b..23cd7ea7f4 100644 --- a/basis/http/client/client-tests.factor +++ b/basis/http/client/client-tests.factor @@ -191,6 +191,22 @@ CONSTANT: classic-proxy-settings H{ ] with-variables ] unit-test +{ URL" http://localhost:3128" } [ + { { "http.proxy" "localhost:3128" } } [ + "google.com" "GET" ?default-proxy proxy-url>> + ] with-variables +] unit-test + +{ URL" http://localhost:3128" } [ + "google.com" "GET" + URL" localhost:3128" >>proxy-url ?default-proxy proxy-url>> +] unit-test + +{ URL" http://localhost:3128" } [ + "google.com" "GET" + "localhost:3128" >>proxy-url ?default-proxy proxy-url>> +] unit-test + { URL" http://proxysec.private:3128" } [ classic-proxy-settings [ "https://google.com" "GET" ?default-proxy proxy-url>> diff --git a/basis/http/client/client.factor b/basis/http/client/client.factor index b439d31384..df58573343 100644 --- a/basis/http/client/client.factor +++ b/basis/http/client/client.factor @@ -204,10 +204,20 @@ SYMBOL: redirects [ "HTTP_PROXY" os-env ] unless* ] if ; +: misparsed-url? ( url -- url' ) + [ protocol>> not ] [ host>> not ] [ path>> ] + tri and and ; + +: request-url ( url -- url' ) + dup >url dup misparsed-url? [ + drop dup url? [ present ] when + "http://" prepend >url + ] [ nip ] if ensure-port ; + : ?default-proxy ( request -- request' ) dup get-default-proxy - over proxy-url>> 2dup and [ - pick no-proxy? [ nip ] [ [ >url ] dip derive-url ] if + over proxy-url>> dup [ request-url ] when 2dup and [ + pick no-proxy? [ nip ] [ [ request-url ] dip derive-url ] if ] [ nip ] if check-proxy ; : (with-http-request) ( request quot: ( chunk -- ) -- response ) @@ -237,16 +247,6 @@ SYMBOL: redirects [ do-redirect ] [ nip ] if ] with-variable ; inline recursive -: misparsed-url? ( url -- url' ) - [ protocol>> not ] [ host>> not ] [ path>> ] - tri and and ; - -: request-url ( url -- url' ) - dup >url dup misparsed-url? [ - drop dup url? [ present ] when - "http://" prepend >url - ] [ nip ] if ensure-port ; - : ( url method -- request ) swap >>method