aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/web/render.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-data-service/web/render.scm')
-rw-r--r--guix-data-service/web/render.scm31
1 files changed, 21 insertions, 10 deletions
diff --git a/guix-data-service/web/render.scm b/guix-data-service/web/render.scm
index 744c66c..fee5daf 100644
--- a/guix-data-service/web/render.scm
+++ b/guix-data-service/web/render.scm
@@ -139,30 +139,41 @@
#f)))
(define* (render-html #:key sxml (extra-headers '())
- (code 200))
+ (code 200)
+ stream?)
(list (build-response
#:code code
#:headers (append extra-headers
'((content-type . (text/html
(charset . "utf-8")))
(vary . (accept)))))
- (call-with-encoded-output-string
- "utf-8"
- (lambda (port)
- (sxml->html sxml port)))))
+ (if stream?
+ (lambda (port)
+ (set-port-encoding! port "utf-8")
+ (setvbuf port 'block (expt 2 20))
+ (sxml->html sxml port))
+ (call-with-encoded-output-string
+ "utf-8"
+ (lambda (port)
+ (sxml->html sxml port))))))
(define* (render-json json #:key (extra-headers '())
- (code 200))
+ (code 200)
+ stream?)
(list (build-response
#:code code
#:headers (append extra-headers
'((content-type . (application/json
(charset . "utf-8")))
(vary . (accept)))))
- (call-with-encoded-output-string
- "utf-8"
- (lambda (port)
- (scm->json json port)))))
+ (if stream?
+ (lambda (port)
+ (setvbuf port 'block (expt 2 16))
+ (scm->json json port))
+ (call-with-encoded-output-string
+ "utf-8"
+ (lambda (port)
+ (scm->json json port))))))
(define* (render-text text #:key (extra-headers '())
(code 200))