]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' into experimental
authorAlex Chapman <chapman.alex@gmail.com>
Fri, 30 Jan 2009 10:20:28 +0000 (21:20 +1100)
committerAlex Chapman <chapman.alex@gmail.com>
Fri, 30 Jan 2009 10:20:28 +0000 (21:20 +1100)
Conflicts:
basis/http/client/client.factor

1  2 
basis/http/client/client.factor

index 9c56411290ab4c7b4b9647658958838747a2199d,e7305ed372b96d00023eb40536f948326a338c19..d4d09789121241135a07db213c626402286db432
@@@ -160,32 -127,29 +129,39 @@@ PRIVATE
          [ do-redirect ] [ nip ] if
      ] with-variable ; inline recursive
  
+ : <client-request> ( url method -- request )
+     <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* ;
 +
 +: <client-request> ( url -- request )
 +    <request> swap >url ensure-port >>url ;
 +
 +: <client-data-request> ( data url -- request )
 +    <client-request> swap >>post-data ;
  
  : <get-request> ( url -- request )
-     <client-request> "GET" >>method ;
+     "GET" <client-request> ;
  
  : http-get ( url -- response data )
      <get-request> http-request ;