: success? ( code -- ? ) 200 299 between? ;
-ERROR: download-failed response ;
+ERROR: download-failed response data ;
-: check-response ( response -- response )
- dup code>> success? [ download-failed ] unless ;
+M: download-failed error.
+ "HTTP request failed:" print nl
+ [ response>> . ] [ data>> . ] bi ;
+
+: check-response* ( response data -- response data )
+ over code>> success? [ download-failed ] unless ;
+ : check-response-with-body ( response body -- response body )
+ [ >>body check-response ] keep ;
+
: with-http-request ( request quot -- response )
- [ (with-http-request) check-response ] with-destructors ; inline
+ [ (with-http-request) ] with-destructors ; inline
: http-request ( request -- response data )
[ [ % ] with-http-request ] B{ } make