request debugger added by andyjpb on Wed Aug 8 12:29:28 2012
;;; Beginnings of the POST handler library code (use spiffy intarweb uri-common) (define (post-handler continue spiffy-continue . rest) (let* ((read-request-data (lambda (request) (let ((len (header-value 'content-length (request-headers request)))) ;; If the header is not available, this will read until EOF (if len ; ho hum... maybe not. Check the semantics of the header-value procedure and ensure that we're safe by only reading if the header is present and reasonable. (read-string len (request-port request)))))) (request-data (read-request-data (current-request))) (request-decoded (form-urldecode request-data))) (apply continue spiffy-continue request-decoded request-data rest))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; POST Debuggers (define ++ string-append) (define (print-request request) (for-each (lambda (f) (display (++ "<h2>" (car f) "</h2>")) (display (++ "<pre>" (htmlize (->string ((cdr f) request))) "</pre>"))) `(("uri" . ,request-uri) ("port" . ,request-port) ("method" . ,request-method) ("major" . ,request-major) ("minor" . ,request-minor) ("headers" . ,request-headers)))) (define (request-debugger _ request-data) (display "<h1>current-request</h1>") (display "<pre>") (write-request (update-request (current-request) port: (current-output-port))) (display "</pre>") (display "<h2>request body</h2>") (display "<pre>") (display request-data) (display "</pre>") (display "<pre>") (pp (form-urldecode request-data)) (display "</pre>") (print-request (current-request)) (display "<pre>") (display (htmlize (with-output-to-string (lambda () (pp (headers->list (request-headers (current-request)))))))) (display "</pre>") (display "<h1>current-response</h1>") (display "<pre>") (write-response (update-response (current-response) port: (current-output-port))) (display "</pre>") ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;