(module spiffy-uri-match (redirect-to default-response-headers uri-match/spiffy) (import chicken scheme) (use uri-match spiffy uri-common intarweb extras) (define (redirect-to path #!key (code 302) (headers '())) (send-response code: code headers: `((location ,(uri-relative-to (uri-reference path) (server-root-uri))) . ,headers))) (define default-response-headers (make-parameter `((content-type #(text/html ((charset . "utf-8")))) (accept-charset utf-8)))) (define (uri-match/spiffy routes) (let ((match (make-uri-matcher routes))) (lambda (continue) (let ((handler (match (request-method (current-request)) (request-uri (current-request))))) (if handler (with-headers (default-response-headers) (lambda () (or (handler) (continue)))) (continue)))))) )