Merge branch 'master' of git://github.com/slavapestov/factor

db4
John Benediktsson 2011-01-29 20:52:47 -08:00
commit d55d996269
4 changed files with 41 additions and 10922 deletions

View File

@ -30,7 +30,6 @@ ephemeral-key-bits ;
secure-config new
SSLv23 >>method
1024 >>ephemeral-key-bits
"vocab:openssl/cacert.pem" >>ca-file
t >>verify ;
TUPLE: secure-context < disposable config handle ;

File diff suppressed because it is too large Load Diff

View File

@ -205,6 +205,26 @@ urls [
derive-url
] unit-test
[
T{ url
{ protocol "https" }
{ host "www.apple.com" }
}
] [
T{ url
{ protocol "http" }
{ host "www.apple.com" }
{ port 80 }
}
T{ url
{ protocol "https" }
{ host "www.apple.com" }
}
derive-url
] unit-test
[ "a" ] [
<url> "a" "b" set-query-param "b" query-param
] unit-test

View File

@ -1,4 +1,4 @@
! Copyright (C) 2008, 2010 Slava Pestov.
! Copyright (C) 2008, 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: kernel ascii combinators combinators.short-circuit
sequences splitting fry namespaces make assocs arrays strings
@ -92,6 +92,14 @@ M: string >url
[ drop f ]
} case ;
: relative-url ( url -- url' )
clone
f >>protocol
f >>host
f >>port ;
: relative-url? ( url -- ? ) protocol>> not ;
<PRIVATE
: unparse-username-password ( url -- )
@ -113,8 +121,6 @@ M: string >url
[ path>> "/" head? [ "/" % ] unless ]
} cleave ;
PRIVATE>
M: url present
[
{
@ -125,6 +131,8 @@ M: url present
} cleave
] "" make ;
PRIVATE>
: url-append-path ( path1 path2 -- path )
{
{ [ dup "/" head? ] [ nip ] }
@ -134,6 +142,14 @@ M: url present
[ [ "/" split1-last drop "/" ] dip 3append ]
} cond ;
<PRIVATE
: derive-port ( url base -- url' )
over relative-url? [ [ port>> ] either? ] [ drop port>> ] if ;
: derive-path ( url base -- url' )
[ path>> ] bi@ swap url-append-path ;
PRIVATE>
: derive-url ( base url -- url' )
@ -142,20 +158,12 @@ PRIVATE>
[ [ username>> ] either? >>username ]
[ [ password>> ] either? >>password ]
[ [ host>> ] either? >>host ]
[ [ port>> ] either? >>port ]
[ [ path>> ] bi@ swap url-append-path >>path ]
[ derive-port >>port ]
[ derive-path >>path ]
[ [ query>> ] either? >>query ]
[ [ anchor>> ] either? >>anchor ]
} 2cleave ;
: relative-url ( url -- url' )
clone
f >>protocol
f >>host
f >>port ;
: relative-url? ( url -- ? ) protocol>> not ;
! Half-baked stuff follows
: secure-protocol? ( protocol -- ? )
"https" = ;