web server is basically working

This commit is contained in:
@s.roertgen 2024-11-18 22:42:10 +01:00
commit 0b6513bae2
5 changed files with 100 additions and 0 deletions

30
.gitignore vendored Normal file
View file

@ -0,0 +1,30 @@
.calva/output-window/
.calva/repl.calva-repl
.classpath
.clj-kondo/.cache
.cpcache
.eastwood
.factorypath
.hg/
.hgignore
.java-version
.lein-*
.lsp/.cache
.lsp/sqlite.db
.nrepl-history
.nrepl-port
.portal/vs-code.edn
.project
.rebel_readline_history
.settings
.socket-repl-port
.sw*
.vscode
*.class
*.jar
*.swp
*~
/checkouts
/classes
/target

14
deps.edn Normal file
View file

@ -0,0 +1,14 @@
{:deps {org.clojure/clojure {:mvn/version "1.12.0"}
com.stuartsierra/component {:mvn/version "1.1.0"}
io.pedestal/pedestal.service {:mvn/version "0.7.2"}
io.pedestal/pedestal.jetty {:mvn/version "0.7.1"}
org.slf4j/slf4j-simple {:mvn/version "2.0.10"}
net.clojars.laoc/nostr {:local/root "/home/laoc/coding/nostr-clj"}}
:aliases
{:nrepl
{:extra-deps
{nrepl/nrepl {:mvn/version "1.3.0"}}
:main-opts ["-m" "nrepl.cmdline"
"-b" "0.0.0.0"
"-p" "12344"]}}}

View file

@ -0,0 +1,39 @@
(ns app.components.webserver
(:require [io.pedestal.http :as http]
[com.stuartsierra.component :as component]
[io.pedestal.http.route :as route]))
(defn respond-hello [request]
{:status 200 :body "Hello, world!"})
(defn resources-by-user [request]
{:status 200 :body "hello user"})
(def routes
(route/expand-routes
#{["/greet" :get respond-hello :route-name :greet]
["/user" :get resources-by-user :route-name :user]}))
(defn create-service []
(http/create-server
{::http/routes routes
::http/type :jetty
::http/port 8890}))
(defn start []
(http/start (create-service)))
(defrecord WebServer []
component/Lifecycle
(start [this]
(println ";; Starting Web server...")
(let [server (create-service)]
(assoc this :server (http/start server))))
(stop [this]
(println ";; Stopping Web server...")
(when-let [server (:server this)]
(http/stop server))
(assoc this :server nil)))
(defn new-web-server []
(map->WebServer {}))

10
src/app/core.clj Normal file
View file

@ -0,0 +1,10 @@
(ns app.core
(:require [com.stuartsierra.component :as component]
[app.system :as system]))
(defn main []
(component/start (system/system )))
(comment
(component/stop (system/system))
)

7
src/app/system.clj Normal file
View file

@ -0,0 +1,7 @@
(ns app.system
(:require [com.stuartsierra.component :as component]
[app.components.webserver :refer [new-web-server]]))
(defn system []
(component/system-map
:web (new-web-server)))