From 1fe086af924e7c497586d41bfae203f097bf6f81 Mon Sep 17 00:00:00 2001 From: Coin Okay Date: Wed, 22 Apr 2020 20:17:07 -0500 Subject: reorganizing, removed iterate dep --- lazybones.asd | 2 +- lazybones.lisp | 26 +++++++++++++------------- package.lisp | 6 +----- 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 -- cgit v1.2.3