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>")
  )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;