simple file-based backend storage for http-session added by mario-goulart on Thu Sep 15 22:49:24 2011
(use awful http-session) (define (session-item->list session-item) (list (session-item-expiration session-item) (session-item-ip session-item) (session-item-bindings session-item) (session-item-finalizer session-item))) (define (list->session-item l) (apply make-session-item l)) (session-storage-initialize (lambda () (let ((dir (create-temporary-directory))) (print "Using " dir " as sessions-dir.") dir))) (session-storage-set! (lambda (sid session-item) (with-output-to-file (make-pathname (session-storage) sid) (lambda () (pp (session-item->list session-item)))))) (session-storage-ref (lambda (sid) (let ((data (with-input-from-file (make-pathname (session-storage) sid) read))) (list->session-item data)))) (session-storage-delete! (lambda (sid) (delete-file* (make-pathname (session-storage) sid)))) ;; awful pages (define-session-page (main-page-path) (lambda () (with-request-variables (foo) ($session-set! 'foo foo) (string-append "foo set to " (->string foo))))) (define-session-page "/foo" (lambda () (->string ($session 'foo))))