From 2aa6bca29e6a2782a789cdf6fc2cfdfbcb06a628 Mon Sep 17 00:00:00 2001 From: Coin Okay Date: Fri, 24 Apr 2020 18:40:48 -0500 Subject: application/x-www-form-urlencoded decoder --- decoders.lisp | 16 +++++++++++++++- lazybones.asd | 9 ++++++++- package.lisp | 7 +++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/decoders.lisp b/decoders.lisp index d6bb7d6..9878b44 100644 --- a/decoders.lisp +++ b/decoders.lisp @@ -114,7 +114,6 @@ becomes (:content-disposition (:name \"file\" :filename \"mypic.png\"))") (<> (read-body-to-string stream content-length) + (split-sequence #\&) + (mapcar (lambda (s) (split-sequence #\= s))) + (as->* pairs + (loop + :for (key undecoded) :in pairs + :appending (list (make-keyword key) + (urldecode undecoded :queryp t)))))) + +(add-decoder "application/x-www-form-urlencoded" #'decode-application/x-www-form-urlencoded) diff --git a/lazybones.asd b/lazybones.asd index 575e342..54c2643 100644 --- a/lazybones.asd +++ b/lazybones.asd @@ -6,7 +6,14 @@ :license "AGPLv3" :version "0.0.1" :serial t - :depends-on (#:clack #:jonathan #:alexandria #:split-sequence #:parzival #:cl-fad) + :depends-on (#:clack + #:jonathan + #:alexandria + #:split-sequence + #:do-urlencode + #:arrows + #:parzival + #:cl-fad) :components ((:file "package") (:file "lazybones") (:file "decoders"))) diff --git a/package.lisp b/package.lisp index 0bd0c95..102cff9 100644 --- a/package.lisp +++ b/package.lisp @@ -26,5 +26,12 @@ (defpackage #:lazybones.decoders (:use #:cl #:parzival) + (:import-from #:split-sequence + #:split-sequence) + (:import-from #:arrows + #:->> + #:as->*) + (:import-from #:do-urlencode + #:urldecode) (:import-from #:lazybones #:add-decoder)) -- cgit v1.2.3