;;; Copyright © 2019 - 2023 Jakob L. Kreuze ;;; ;;; This program is free software; you can redistribute it and/or ;;; modify it under the terms of the GNU General Public License as ;;; published by the Free Software Foundation; either version 3 of the ;;; License, or (at your option) any later version. ;;; ;;; This program is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;; General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with this program. If not, see ;;; . (define-module (jakob dynamic config) #:export (%debug-enabled %api-server-port paramstring-for-dbname absolute-url)) ;; Whether or not to enable "debug mode", in which: ;; ;; - Log messages are written to stdout. ;; - Rate limiting is disabled. (define %debug-enabled (make-parameter (or (getenv "API_SERVER_DEBUG") #f))) ;; Port that the API server should listen on (define %api-server-port (make-parameter (or (getenv "API_SERVER_PORT") 8080))) ;; Should be fairly self-explanatory. (define %postgresql-user (make-parameter (or (getenv "API_SERVER_DB_USER") "jakob_dynamic"))) (define %postgresql-host (make-parameter (or (getenv "API_SERVER_DB_HOST") "localhost"))) (define %postgresql-port (make-parameter (or (getenv "API_SERVER_DB_PORT") "5432"))) (define (paramstring-for-dbname dbname) (format #f "host=~a port=~a user=~a dbname=~a" (%postgresql-host) (%postgresql-port) (%postgresql-user) dbname)) (define (absolute-url relative-path) "Produce an absolute URL from the identifier RELATIVE-PATH" (if (%debug-enabled) (format #f "http://localhost:~a/~a" (%api-server-port) relative-path) (string-append "https://jakob.space" relative-path)))