]> gitweb.factorcode.org Git - factor.git/blob - basis/furnace/referrer/referrer.factor
factor: trim more using lists.
[factor.git] / basis / furnace / referrer / referrer.factor
1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors furnace.utilities http.server
4 http.server.filters http.server.responses kernel ;
5 IN: furnace.referrer
6
7 TUPLE: referrer-check < filter-responder quot ;
8
9 C: <referrer-check> referrer-check
10
11 M: referrer-check call-responder*
12     referrer over quot>> call( referrer -- ? )
13     [ call-next-method ]
14     [ 2drop 403 "Bad referrer" <trivial-response> ] if ;
15
16 : <check-form-submissions> ( responder -- responder' )
17     [ post-request? [ same-host? ] [ drop t ] if ] <referrer-check> ;