sunet/scheme/httpd/surflets/send-html.scm

50 lines
1.4 KiB
Scheme

;;; Allows sending of HTML represented in Oleg-like SXML-list instead
;;; of pure string.
;;; Copyright 2002,2003, Andreas Bernauer
;; Send surflet-sxml lists as HTML
(define (send-html/suspend html-tree-maker)
(send/suspend
(lambda (new-url)
(make-usual-html-response
(sxml->string (html-tree-maker new-url)
surflet-sxml-rules)))))
(define (send-html/finish html-tree)
(do-html-sending send/finish html-tree))
(define (send-html html-tree)
(do-html-sending send html-tree))
;; Semd strings as HTML
(define (send-html-string/suspend html-string-maker)
(send/suspend
(lambda (new-url)
(make-usual-html-response
(html-string-maker new-url)))))
(define (send-html-string/finish html-string)
(do-html-string-sending send/finish html-string))
(define (send-html-string html-string)
(do-html-string-sending send html-string))
;; Helping functions
(define (do-html-sending sender html-tree)
(sender (make-usual-html-response
(sxml->string html-tree surflet-sxml-rules))))
(define (do-html-string-sending sender html-string)
(sender (make-usual-html-response html-string)))
;; This is not for public, as we add the no-cache header that is
;; needed for SUrflets.
(define (make-usual-html-response html-string)
(make-surflet-response
(status-code ok)
"text/html"
'(("Cache-Control" . "no-cache"))
html-string))