] with-variables
] unit-test
+{ URL" http://localhost:3128" } [
+ { { "http.proxy" "localhost:3128" } } [
+ "google.com" "GET" <client-request> ?default-proxy proxy-url>>
+ ] with-variables
+] unit-test
+
+{ URL" http://localhost:3128" } [
+ "google.com" "GET" <client-request>
+ URL" localhost:3128" >>proxy-url ?default-proxy proxy-url>>
+] unit-test
+
+{ URL" http://localhost:3128" } [
+ "google.com" "GET" <client-request>
+ "localhost:3128" >>proxy-url ?default-proxy proxy-url>>
+] unit-test
+
{ URL" http://proxysec.private:3128" } [
classic-proxy-settings [
"https://google.com" "GET" <client-request> ?default-proxy proxy-url>>
[ "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 )
[ 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 ;
-
: <client-request> ( url method -- request )
<request>
swap >>method