diff --git a/backend/Makefile b/backend/Makefile index 68dbeb1..853d3af 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -6,9 +6,10 @@ SCRP=$(shell chicken-install -repository) CSC=CHICKEN_REPOSITORY_PATH=../eggs:$(SCRP) csc BRMINV_SOURCES=brminv.scm frontend.import.scm command-line.import.scm \ - util-proc.import.scm duck.import.scm texts.import.scm + util-proc.import.scm duck.import.scm texts.import.scm \ + api-servlets.import.scm BRMINV_OBJS=brminv.o frontend.o command-line.o util-proc.o duck.o \ - texts.o + texts.o api-servlets.o %.o: %.scm $(CSC) -c -static $< @@ -46,3 +47,8 @@ TEXTS-SOURCES=texts.scm texts.o: texts.import.scm texts.import.scm: $(TEXTS-SOURCES) + +API-SERVLETS-SOURCES=api-servlets.scm + +api-servlets.o: api-servlets.import.scm +api-servlets.import.scm: $(API-SERVLETS-SOURCES) diff --git a/backend/api-servlets.scm b/backend/api-servlets.scm new file mode 100644 index 0000000..44de9db --- /dev/null +++ b/backend/api-servlets.scm @@ -0,0 +1,42 @@ +;; +;; api-servlets.scm +;; +;; All servlets in one place. +;; +;; ISC License +;; +;; Copyright 2023-2025 Brmlab, z.s. +;; Dominik Pantůček +;; +;; Permission to use, copy, modify, and/or distribute this software +;; for any purpose with or without fee is hereby granted, provided +;; that the above copyright notice and this permission notice appear +;; in all copies. +;; +;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +;; + +(declare (unit api-servlets)) + +(module + api-servlets + ( + api-dispatch + ) + + (import scheme + spiffy + (chicken format)) + + (define (api-dispatch plst) + (send-response #:body (format "API call: ~A" plst)) + #t) + + ) diff --git a/backend/brminv.scm b/backend/brminv.scm index 6da26c6..1c5673a 100644 --- a/backend/brminv.scm +++ b/backend/brminv.scm @@ -32,7 +32,8 @@ intarweb uri-common (chicken string) - postgresql) + postgresql + api-servlets) (define -port- (make-parameter #f)) (define -certificate- (make-parameter #f)) @@ -112,8 +113,7 @@ (define plst (cdr (uri-path (request-uri (current-request))))) (cond ((and (not (null? plst)) (equal? (car plst) "api")) - (send-response #:body "API call") - #t) + (api-dispatch (cdr plst))) (else #f)))