From 944602440c4e44cec8a4a6662336989fe37b29e7 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 2 Apr 2013 19:05:37 -0500 Subject: [PATCH] add response/output --- collects/web-server/http/response-structs.rkt | 19 ++++++++++++++++++- collects/web-server/scribblings/http.scrbl | 12 ++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/collects/web-server/http/response-structs.rkt b/collects/web-server/http/response-structs.rkt index 3f63724828..979962978e 100644 --- a/collects/web-server/http/response-structs.rkt +++ b/collects/web-server/http/response-structs.rkt @@ -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?]) diff --git a/collects/web-server/scribblings/http.scrbl b/collects/web-server/scribblings/http.scrbl index 64879cd165..92cad80056 100644 --- a/collects/web-server/scribblings/http.scrbl +++ b/collects/web-server/scribblings/http.scrbl @@ -235,6 +235,18 @@ Examples: #"

")) ] } + +@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"].}