aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoin Okay <cbeok@protonmail.com>2020-04-22 20:17:07 -0500
committerCoin Okay <cbeok@protonmail.com>2020-04-22 20:17:07 -0500
commit1fe086af924e7c497586d41bfae203f097bf6f81 (patch)
tree3f5e00cac420526dae974584bda44f75c6c01242
parent22258951c45d89a19bde494acd5510ad48ae1d0e (diff)
reorganizing, removed iterate dep
-rw-r--r--lazybones.asd2
-rw-r--r--lazybones.lisp26
-rw-r--r--package.lisp6
3 files changed, 15 insertions, 19 deletions
diff --git a/lazybones.asd b/lazybones.asd
index 1a63d11..fb68736 100644
--- a/lazybones.asd
+++ b/lazybones.asd
@@ -6,6 +6,6 @@
:license "Specify license here"
:version "0.0.1"
:serial t
- :depends-on (#:clack #:jonathan #:iterate #:alexandria #:split-sequence)
+ :depends-on (#:clack #:jonathan #:alexandria #:split-sequence)
:components ((:file "package")
(:file "lazybones")))
diff --git a/lazybones.lisp b/lazybones.lisp
index 4924b84..9bd3014 100644
--- a/lazybones.lisp
+++ b/lazybones.lisp
@@ -2,6 +2,8 @@
(in-package #:lazybones)
+;;; SPECIAL VARS
+
(defvar *handler* nil
"Clack handler top-level handler.")
@@ -26,12 +28,21 @@ Bound by route handlers for POST, PUT, and PATCH requests.")
"An ALIST holding (mimetype . decoder) pairs. Add a decoder to this
to customize decoding of POST and PUT bodies.")
+;;; HANDLER UTILITIES
+
(defun add-header (key val)
"Adds a header to the response headers. Can be used within a handler
definition."
(setf (getf *resp-headers* key) val))
+(defun add-decoder (mimetype decoder)
+ "Adds or replaces a DECODER function for supplied MIMETYPE"
+ (if-let ((decoder-pair (assoc mimetype *decoders* :test #'string-equal)))
+ (setf (cdr decoder-pair) decoder)
+ (push (cons mimetype decoder)
+ *decoders*)))
+
(defun read-body-to-string (stream content-length)
"Reads CONTENT-LENGTH characters from STREAM and returns a string."
(let ((string (make-string content-length)))
@@ -43,14 +54,6 @@ definition."
"Reads LEN characters from stream and decodes them as JSON, returning a PLIST"
(jonathan:parse (read-body-to-string stream len)))
-
-(defun add-decoder (mimetype decoder)
- "Adds or replaces a DECODER function for supplied MIMETYPE"
- (if-let ((decoder-pair (assoc mimetype *decoders* :test #'string-equal)))
- (setf (cdr decoder-pair) decoder)
- (push (cons mimetype decoder)
- *decoders*)))
-
(add-decoder "application/json" #'decode-json-body)
@@ -132,11 +135,8 @@ handler, bound to the variable ID.
E.g.: /foo/bar/:goo/zar/:moo would result in (GOO MOO)"
- (iter (for val in (split-sequence:split-sequence #\/ path-spec))
- (when (path-var-p val)
- (collect (read-from-string (subseq val 1))))))
-
-
+ (loop :for val :in (split-sequence:split-sequence #\/ path-spec)
+ :when (path-var-p val) :collect (read-from-string (subseq val 1))))
(defmacro defroute (method path &rest body)
"Defines a new route handler.
diff --git a/package.lisp b/package.lisp
index 66b08bc..b46a3d6 100644
--- a/package.lisp
+++ b/package.lisp
@@ -6,11 +6,7 @@
#:if-let
#:when-let*
#:starts-with-subseq)
- (:import-from #:iterate
- #:iter
- #:for
- #:in
- #:collect)
+
(:nicknames :lzb)
(:export