From dd9e39861adf4b795e48b7f8b448c5fc1ca7e702 Mon Sep 17 00:00:00 2001 From: Silas Vedder Date: Thu, 1 Sep 2022 19:19:28 +0200 Subject: [PATCH] Added api endpoint. --- api.lisp | 12 ++++++++++++ cl-bible.asd | 2 +- cl-bible.lisp | 7 ++----- package.lisp | 10 ++++++++++ verse.lisp | 2 +- 5 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 api.lisp diff --git a/api.lisp b/api.lisp new file mode 100644 index 0000000..e0c3c3c --- /dev/null +++ b/api.lisp @@ -0,0 +1,12 @@ +(in-package #:cl-bible.api) + +(defvar *server* (make-instance 'h:easy-acceptor :port 4242)) + +(defmethod start ((server h:easy-acceptor)) + (h:start server)) + +(h:define-easy-handler (get-reference :uri "/ref") (reference bible) + (setf (h:content-type*) "text/plain") + (setf (h:header-out :access-control-allow-origin) "*") + (let ((bible (d::read-bible-from-tsv (or bible "mng")))) + (j:to-json (v:to-sexp (s:find-verse bible (s:parse-position reference)))))) diff --git a/cl-bible.asd b/cl-bible.asd index 77e2d62..0421a94 100644 --- a/cl-bible.asd +++ b/cl-bible.asd @@ -6,7 +6,7 @@ :license "MIT" :version "0.0.4" :serial t - :depends-on (#:str #:clog) + :depends-on (#:str #:clog #:hunchentoot #:jonathan) :components ((:file "package") (:file "chapter") (:file "verse") diff --git a/cl-bible.lisp b/cl-bible.lisp index 34bf855..2d7fd2c 100644 --- a/cl-bible.lisp +++ b/cl-bible.lisp @@ -12,8 +12,5 @@ (start) (loop)) -(defun build () - (mapc (lambda (verse) - (setf (cl-bible.verse:notes verse) nil)) - cl-bible.data:*bible*) - #+sbcl (sb-ext:save-lisp-and-die "bible" :executable t :toplevel #'main)) +(defun build (&optional (name "bible")) + #+sbcl (sb-ext:save-lisp-and-die name :executable t :toplevel #'main)) diff --git a/package.lisp b/package.lisp index 05ca63d..660e318 100644 --- a/package.lisp +++ b/package.lisp @@ -75,3 +75,13 @@ #:cl-bible.search) (:local-nicknames (#:c #:clog) (#:cg #:clog-gui))) + +(defpackage #:cl-bible.api + (:use #:cl) + (:local-nicknames (#:l #:cl-bible.lift-search) + (#:d #:cl-bible.data) + (#:s #:cl-bible.search) + (#:v #:cl-bible.verse) + (#:ch #:cl-bible.chapter) + (#:h #:hunchentoot) + (#:j #:jonathan))) diff --git a/verse.lisp b/verse.lisp index 2f83dd7..fe82645 100644 --- a/verse.lisp +++ b/verse.lisp @@ -33,7 +33,7 @@ (defgeneric from-sexp (bible)) (defmethod print-object ((verse verse) stream) - (format stream (verse-to-string verse :separator " "))) + (format stream (verse-to-string verse))) (defmethod string-to-verse ((string string)) (let ((verse (uiop:split-string string :separator '(#\Tab))))