Added api endpoint.

This commit is contained in:
Silas Vedder 2022-09-01 19:19:28 +02:00
parent 56576a728c
commit dd9e39861a
5 changed files with 26 additions and 7 deletions

12
api.lisp Normal file
View File

@ -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))))))

View File

@ -6,7 +6,7 @@
:license "MIT" :license "MIT"
:version "0.0.4" :version "0.0.4"
:serial t :serial t
:depends-on (#:str #:clog) :depends-on (#:str #:clog #:hunchentoot #:jonathan)
:components ((:file "package") :components ((:file "package")
(:file "chapter") (:file "chapter")
(:file "verse") (:file "verse")

View File

@ -12,8 +12,5 @@
(start) (start)
(loop)) (loop))
(defun build () (defun build (&optional (name "bible"))
(mapc (lambda (verse) #+sbcl (sb-ext:save-lisp-and-die name :executable t :toplevel #'main))
(setf (cl-bible.verse:notes verse) nil))
cl-bible.data:*bible*)
#+sbcl (sb-ext:save-lisp-and-die "bible" :executable t :toplevel #'main))

View File

@ -75,3 +75,13 @@
#:cl-bible.search) #:cl-bible.search)
(:local-nicknames (#:c #:clog) (:local-nicknames (#:c #:clog)
(#:cg #:clog-gui))) (#: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)))

View File

@ -33,7 +33,7 @@
(defgeneric from-sexp (bible)) (defgeneric from-sexp (bible))
(defmethod print-object ((verse verse) stream) (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)) (defmethod string-to-verse ((string string))
(let ((verse (uiop:split-string string :separator '(#\Tab)))) (let ((verse (uiop:split-string string :separator '(#\Tab))))