diff options
Diffstat (limited to 'weeb/main.scm')
| -rw-r--r-- | weeb/main.scm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/weeb/main.scm b/weeb/main.scm index 7487f19..b6e47ec 100644 --- a/weeb/main.scm +++ b/weeb/main.scm @@ -110,6 +110,11 @@ (match-lambda ("GET" 'GET) ("POST" 'POST))) + (define (strip-query-string uri) + (let ((match-object (string-match "^(/.*)\\?" uri))) + (if match-object + (match:substring match-object 1) + uri))) ;; According to RFC 9110, header names must be treated as case-insensitive. (define headers (filter-map @@ -125,8 +130,9 @@ #f))) (environ))) (let* ((method (string->method (getenv "REQUEST_METHOD"))) - (uri (getenv "REQUEST_URI"))) - (make-struct <request> method uri '() headers (fcgi-read)))) + (query (parse-form-urlencoded (getenv "QUERY_STRING"))) + (uri (strip-query-string (getenv "REQUEST_URI")))) + (make-struct <request> method uri query headers (fcgi-read)))) (define (handle-errors thunk) (catch #t |