web-server: Bypass response sanitization for static files.

Just copy the raw bytes.

* haunt/serve/web-server.scm (dump-file): Delete.
  (render-file): Return a bytevector instead of a writer procedure.
This commit is contained in:
David Thompson 2015-07-27 08:48:29 -04:00
parent c2a3fd273a
commit 2d82b5f2f0
1 changed files with 2 additions and 11 deletions

View File

@ -28,6 +28,7 @@
#:use-module (ice-9 match)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 binary-ports)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (sxml simple)
@ -90,21 +91,11 @@ Otherwise, return FILE-NAME as-is."
((file-exists? file-name) file-name)
(else #f))))
(define (dump-file file-name port)
"Write the contents of FILE-NAME to PORT."
(with-input-from-file file-name
(lambda ()
(let loop ((char (read-char)))
(unless (eof-object? char)
(write-char char port)
(loop (read-char)))))))
(define (render-file file-name)
"Return a 200 OK HTTP response that renders the contents of
FILE-NAME."
(values `((content-type . (,(mime-type file-name))))
(lambda (port)
(dump-file file-name port))))
(call-with-input-file file-name get-bytevector-all)))
(define (render-directory path dir)
"Render the contents of DIR represented by the URI PATH."