From 091f5ab5909048e99dae7a60ca8b070d1963ac22 Mon Sep 17 00:00:00 2001 From: interp Date: Thu, 3 Oct 2002 00:18:10 +0000 Subject: [PATCH] prepare for POST requests --- scheme/httpd/surflets/surflets.scm | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/scheme/httpd/surflets/surflets.scm b/scheme/httpd/surflets/surflets.scm index e3b011d..5a5cfdf 100644 --- a/scheme/httpd/surflets/surflets.scm +++ b/scheme/httpd/surflets/surflets.scm @@ -37,7 +37,31 @@ (define form-query parse-html-form-query) (define (get-bindings request) - (form-query (http-url:search (request:url request)))) + (let ((request-method (request:method request))) + (cond + ((string=? request-method "GET") + (form-query (http-url:search (request:url request)))) +; ((string=? request-method "POST") +; (let* ((content-length (get-content-length (request:headers request))) +; (form-data (read-line **IN**))) +; (form-query form-data))) + (else + (error "unsupported request type"))))) + +;; Will be needed when we handle POST requests. +;(define (get-content-length headers) +; (cond ((get-header headers 'content-length) => +; ;; adopted from httpd/cgi-server.scm +; (lambda (content-length) ; Skip initial whitespace (& other non-digits). +; (let ((first-digit (string-index content-length char-set:digit)) +; (content-length-len (string-length content-length))) +; (if first-digit +; (number->string (substring content-length first-digit +; content-length-len)) +; ;; http-status/bad-request req +; `(error "Illegal `Content-length:' header."))))) +; (else +; (error "No Content-length specified for POST data.")))) (define (extract-bindings bindings key) (let ((key (if (symbol? key) (symbol->string key) key)))