Welcome to the CHICKEN Scheme pasting service

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))))

Your annotation:

Enter a new annotation:

Your nick:
The title of your paste:
Your paste (mandatory) :
Which module provides `load-relative'?
Visually impaired? Let me spell it for you (wav file) download WAV