Merge branch 'master' of git://github.com/abeaumont/factor
commit
522da6fc0f
|
@ -12,8 +12,6 @@ IN: http.client
|
||||||
|
|
||||||
ERROR: too-many-redirects ;
|
ERROR: too-many-redirects ;
|
||||||
|
|
||||||
CONSTANT: max-redirects 10
|
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: write-request-line ( request -- request )
|
: write-request-line ( request -- request )
|
||||||
|
@ -79,7 +77,7 @@ SYMBOL: redirects
|
||||||
|
|
||||||
:: do-redirect ( quot: ( chunk -- ) response -- response )
|
:: do-redirect ( quot: ( chunk -- ) response -- response )
|
||||||
redirects inc
|
redirects inc
|
||||||
redirects get max-redirects < [
|
redirects get request get redirects>> < [
|
||||||
request get clone
|
request get clone
|
||||||
response "location" header redirect-url
|
response "location" header redirect-url
|
||||||
response code>> 307 = [ "GET" >>method ] unless
|
response code>> 307 = [ "GET" >>method ] unless
|
||||||
|
@ -116,7 +114,8 @@ SYMBOL: redirects
|
||||||
with-output-stream*
|
with-output-stream*
|
||||||
] [
|
] [
|
||||||
in>> [
|
in>> [
|
||||||
read-response dup redirect? [ t ] [
|
read-response dup redirect?
|
||||||
|
request get redirects>> 0 > and [ t ] [
|
||||||
[ nip response set ]
|
[ nip response set ]
|
||||||
[ read-response-body ]
|
[ read-response-body ]
|
||||||
[ ]
|
[ ]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2008 Slava Pestov.
|
! Copyright (C) 2008 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: kernel summary debugger io make math.parser
|
USING: kernel summary debugger io make math.parser
|
||||||
prettyprint http.client accessors ;
|
prettyprint http http.client accessors ;
|
||||||
IN: http.client.debugger
|
IN: http.client.debugger
|
||||||
|
|
||||||
M: too-many-redirects summary
|
M: too-many-redirects summary
|
||||||
|
|
|
@ -17,6 +17,7 @@ $nl
|
||||||
{ { $slot "header" } { "An assoc of HTTP header values. See " { $link "http.headers" } } }
|
{ { $slot "header" } { "An assoc of HTTP header values. See " { $link "http.headers" } } }
|
||||||
{ { $slot "post-data" } { "See " { $link "http.post-data" } } }
|
{ { $slot "post-data" } { "See " { $link "http.post-data" } } }
|
||||||
{ { $slot "cookies" } { "A sequence of HTTP cookies. See " { $link "http.cookies" } } }
|
{ { $slot "cookies" } { "A sequence of HTTP cookies. See " { $link "http.cookies" } } }
|
||||||
|
{ { $slot "redirects" } { "Number of redirects to attempt before throwing an error. Default is " { $snippet "max-redirects" } " ." } }
|
||||||
} } ;
|
} } ;
|
||||||
|
|
||||||
HELP: <response>
|
HELP: <response>
|
||||||
|
|
|
@ -10,6 +10,8 @@ http.parsers
|
||||||
base64 ;
|
base64 ;
|
||||||
IN: http
|
IN: http
|
||||||
|
|
||||||
|
CONSTANT: max-redirects 10
|
||||||
|
|
||||||
: (read-header) ( -- alist )
|
: (read-header) ( -- alist )
|
||||||
[ read-crlf dup f like ] [ parse-header-line ] produce nip ;
|
[ read-crlf dup f like ] [ parse-header-line ] produce nip ;
|
||||||
|
|
||||||
|
@ -137,7 +139,8 @@ url
|
||||||
version
|
version
|
||||||
header
|
header
|
||||||
post-data
|
post-data
|
||||||
cookies ;
|
cookies
|
||||||
|
redirects ;
|
||||||
|
|
||||||
: set-header ( request/response value key -- request/response )
|
: set-header ( request/response value key -- request/response )
|
||||||
pick header>> set-at ;
|
pick header>> set-at ;
|
||||||
|
@ -154,7 +157,8 @@ cookies ;
|
||||||
H{ } clone >>header
|
H{ } clone >>header
|
||||||
V{ } clone >>cookies
|
V{ } clone >>cookies
|
||||||
"close" "connection" set-header
|
"close" "connection" set-header
|
||||||
"Factor http.client" "user-agent" set-header ;
|
"Factor http.client" "user-agent" set-header
|
||||||
|
max-redirects >>redirects ;
|
||||||
|
|
||||||
: header ( request/response key -- value )
|
: header ( request/response key -- value )
|
||||||
swap header>> at ;
|
swap header>> at ;
|
||||||
|
|
Loading…
Reference in New Issue