From: Alex Chapman Date: Fri, 30 Jan 2009 10:20:28 +0000 (+1100) Subject: Merge branch 'master' into experimental X-Git-Tag: 0.94~2132^2~25 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=da7a6da6a54ded7382979b618a3437a5e55f1974 Merge branch 'master' into experimental Conflicts: basis/http/client/client.factor --- da7a6da6a54ded7382979b618a3437a5e55f1974 diff --cc basis/http/client/client.factor index 9c56411290,e7305ed372..d4d0978912 --- a/basis/http/client/client.factor +++ b/basis/http/client/client.factor @@@ -160,32 -127,29 +129,39 @@@ PRIVATE [ do-redirect ] [ nip ] if ] with-variable ; inline recursive + : ( url method -- request ) + + swap >>method + swap >url ensure-port >>url ; inline + + PRIVATE> + : success? ( code -- ? ) 200 299 between? ; -ERROR: download-failed response ; +ERROR: download-failed response data ; + +M: download-failed error. + "HTTP request failed:" print nl + [ response>> . ] [ data>> . ] bi ; -: check-response ( response -- response ) - dup code>> success? [ download-failed ] unless ; +: check-response* ( response data -- response data ) + over code>> success? [ download-failed ] unless ; - : check-response ( response -- response ) - f check-response* drop ; + : with-http-request ( request quot -- response ) + [ (with-http-request) check-response ] with-destructors ; inline : http-request ( request -- response data ) [ [ % ] with-http-request ] B{ } make - over content-charset>> decode ; + over content-charset>> decode check-response* ; + +: ( url -- request ) + swap >url ensure-port >>url ; + +: ( data url -- request ) + swap >>post-data ; : ( url -- request ) - "GET" >>method ; + "GET" ; : http-get ( url -- response data ) http-request ;