From c6ca757a7eac4f2b3b4be886badf314610eefe2d Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 21 Nov 2016 10:57:35 +1300 Subject: [PATCH] Useful web utilities --- racket/syndicate/drivers/web.rkt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/racket/syndicate/drivers/web.rkt b/racket/syndicate/drivers/web.rkt index 918fac3..6537d37 100644 --- a/racket/syndicate/drivers/web.rkt +++ b/racket/syndicate/drivers/web.rkt @@ -8,6 +8,7 @@ (struct-out web-request) (struct-out web-request-header) + web-request-header-content-type (rename-out [web-response-header ]) (struct-out/defaults [make-web-response-header web-response-header]) @@ -26,6 +27,7 @@ websocket-message-recv websocket-message-send! web-respond/bytes! + web-respond/string! web-respond/xexpr! spawn-web-driver) @@ -37,6 +39,7 @@ (require net/rfc6455/conn-api) (require net/rfc6455/dispatcher) (require net/http-client) +(require racket/dict) (require racket/exn) (require racket/tcp) (require racket/set) @@ -73,6 +76,9 @@ (struct web-response-chunk (id bytes) #:prefab) (struct websocket-message (id direction body) #:prefab) +(define (web-request-header-content-type req) + (dict-ref (web-request-header-headers req) 'content-type #f)) + (begin-for-declarations (define-struct-defaults make-web-response-header web-response-header (#:code [web-response-header-code 200] @@ -135,6 +141,9 @@ (define (web-respond/bytes! id #:header [header (make-web-response-header)] body-bytes) (send! (web-response-complete id header body-bytes))) +(define (web-respond/string! id #:header [header (make-web-response-header)] body-string) + (web-respond/bytes! id #:header header (string->bytes/utf-8 body-string))) + (define (web-respond/xexpr! id #:header [header (make-web-response-header)] #:preamble [preamble #""]