add response/output

This commit is contained in:
Robby Findler 2013-04-02 19:05:37 -05:00
parent ffc90239d0
commit 944602440c
2 changed files with 30 additions and 1 deletions

View File

@ -1,5 +1,5 @@
#lang racket/base
(require racket/contract
(require racket/contract
web-server/http/request-structs)
(define TEXT/HTML-MIME-TYPE #"text/html; charset=utf-8")
@ -19,6 +19,16 @@
(for ([b (in-list body)])
(write-bytes b op)))))
(define (response/output output
#:code [code 200]
#:message [message #"Okay"]
#:seconds [seconds (current-seconds)]
#:mime-type [mime-type TEXT/HTML-MIME-TYPE]
#:headers [headers '()])
(response code message seconds mime-type headers
output))
(provide/contract
[struct response
([code number?]
@ -28,4 +38,11 @@
[headers (listof header?)]
[output (output-port? . -> . void)])]
[response/full (-> number? bytes? number? (or/c false/c bytes?) (listof header?) (listof bytes?) response?)]
[response/output (->* ((-> output-port? void?))
(#:code number?
#:message bytes?
#:seconds number?
#:mime-type (or/c bytes? #f)
#:headers (listof header?))
response?)]
[TEXT/HTML-MIME-TYPE bytes?])

View File

@ -235,6 +235,18 @@ Examples:
#"</p></body></html>"))
]
}
@defproc[(response/output [output (-> output-port? void?)]
[#:code code number? 200]
[#:message message bytes? #"Okay"]
[#:seconds seconds number? (current-seconds)]
[#:mime-type mime-type (or/c bytes? #f) TEXT/HTML-MIME-TYPE]
[#:headers headers (listof header?) '()]
[#:cookies cookies (listof cookie?) '()])
response?]{
Equivalent to
@racketblock[(response code message seconds mime-type headers output)]
}
@defthing[TEXT/HTML-MIME-TYPE bytes?]{Equivalent to @racket[#"text/html; charset=utf-8"].}