\r
: handle-post ( action -- response )\r
'[\r
- form-nesting-key params get at " " split\r
+ form-nesting-key params get at " " split harvest\r
[ , (handle-post) ]\r
[ swap '[ , , nest-values ] ] reduce\r
call\r
[ drop f ] [ "," split [ dup value ] H{ } map>assoc ] if ;
: a-url-path ( tag -- string )
- [ "href" required-attr ] [ "rest" optional-attr value ] bi
+ [ "href" required-attr ]
+ [ "rest" optional-attr dup [ value ] when ] bi
[ [ "/" ?tail drop "/" ] dip present 3append ] when* ;
: a-url ( tag -- url )
! See http://factorcode.org/license.txt for BSD license.
USING: assocs kernel math.intervals math.parser namespaces
random accessors quotations hashtables sequences continuations
-fry calendar combinators destructors alarms io.server
+fry calendar combinators combinators.lib destructors alarms io.server
db db.tuples db.types
http http.server http.server.dispatchers http.server.filters
html.elements
: touch-session ( session -- )
sessions get touch-state ;
-: remote-host ( -- string ) remote-address get host>> ;
+: remote-host ( -- string )
+ {
+ [ request get "x-forwarded-for" header ]
+ [ remote-address get host>> ]
+ } 0|| ;
: empty-session ( -- session )
f <session>