Skip to content

Commit

Permalink
sente mega refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
awb99 committed Nov 25, 2024
1 parent 13ae4ed commit dcce2b9
Show file tree
Hide file tree
Showing 18 changed files with 88 additions and 94 deletions.
1 change: 0 additions & 1 deletion build.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
(ns build
(:require
[babashka.fs :as fs]
[clojure.java.io :as io]
[clojure.string :as str]
[clojure.tools.build.api :as b]
Expand Down
26 changes: 11 additions & 15 deletions deps.edn
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
{:paths ["src" "resources"]
:deps {org.clojure/clojure {:mvn/version "1.11.1"}
org.clojure/data.json {:mvn/version "2.4.0"} ; https://github.com/thheller/shadow-cljs/issues/872
; ring middleware
ring/ring-core {:mvn/version "1.9.4"}
metosin/muuntaja {:mvn/version "0.6.8"} ; 30x faster than ring-middleware-format
ring/ring-core {:mvn/version "1.13.0"} ; https://github.com/ring-clojure/ring
metosin/muuntaja {:mvn/version "0.6.10"} ; 30x faster than ring-middleware-format
ring-cors/ring-cors {:mvn/version "0.1.13"}
bk/ring-gzip {:mvn/version "0.3.0"} ; from oz
ring/ring-devel {:mvn/version "1.9.4"} ; reload middleware - same version as rig/core

ring/ring-devel {:mvn/version "1.13.0"} ; reload middleware - same version as rig/core
bidi/bidi {:mvn/version "2.1.6"}
ring/ring-defaults {:mvn/version "0.3.3"
ring/ring-defaults {:mvn/version "0.5.0"
:exclusions [javax.servlet/servlet-api]}
prone/prone {:mvn/version "2021-04-23"} ; exception middleware
ring/ring-json {:mvn/version "0.5.1"}
Expand All @@ -21,18 +19,18 @@
;simplevalue/letsencrypt {:git/url "https://github.com/SimpleValue/sv.letsencrypt.git"
; :sha "8b1a85846acaaa37a58b054f2372d8fde0663b75"}
; webserver
info.sunng/ring-jetty9-adapter {:mvn/version "0.15.2"} ; uses jetty 10.0.2, vlast version with java 9 : 0.14.0

;info.sunng/ring-jetty9-adapter {:mvn/version "0.15.2"} ; uses jetty 10.0.2,
;info.sunng/ring-jetty9-adapter {:mvn/version "0.36.0"} ; jetty 12, but could not get it to work with sente.
ring/ring-jetty-adapter {:mvn/version "1.13.0"} ; jetty 11

hiccup/hiccup {:mvn/version "1.0.5"} ; server side templating

; modular
org.pinkgorilla/modular {:mvn/version "0.0.38"} ; encoding
org.pinkgorilla/modular {:mvn/version "0.2.61"} ; encoding
}


:aliases
{:outdated {:extra-deps {com.github.liquidz/antq {:mvn/version "RELEASE"}}
:main-opts ["-m" "antq.core"]}
{

:test {:extra-paths ["test"]
:extra-deps {io.github.cognitect-labs/test-runner {:git/url "https://github.com/cognitect-labs/test-runner.git"
Expand All @@ -46,9 +44,7 @@

:build {:deps {io.github.clojure/tools.build {:git/tag "v0.6.1" :git/sha "515b334"}
io.github.slipset/deps-deploy {:git/sha "b4359c5d67ca002d9ed0c4b41b710d7e5a82e3bf"}
io.github.seancorfield/build-clj {:git/tag "v0.5.4" :git/sha "bc9c0cc"}
;rewrite-clj/rewrite-clj {:mvn/version "1.0.699-alpha"}
babashka/fs {:mvn/version "0.0.5"}}
io.github.seancorfield/build-clj {:git/tag "v0.5.4" :git/sha "bc9c0cc"}}
:ns-default build}

:webserver {:extra-paths ["src-demo"]
Expand Down
2 changes: 1 addition & 1 deletion src-demo/demo/https.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(ns demo.https
(:require
[modular.webserver.jetty :refer [run-jetty-server]]
[modular.webserver.server.jetty :refer [run-jetty-server]]
[modular.webserver.handler.not-found :refer [not-found-handler]]
[modular.webserver.handler.files :refer [->FilesMaybe ->ResourcesMaybe]]
[modular.webserver.middleware.bidi :refer [wrap-bidi]]
Expand Down
12 changes: 6 additions & 6 deletions src/modular/webserver/handler/files.clj
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@

(defrecord FilesMaybe [options]
bidi/Matched
(resolve-handler [this m]
(resolve-handler [_this m]
(let [reminder (url-decode (:remainder m))
filename (str (:dir options) reminder)]
;(warn "file-maybe: " filename)
(when (.exists (io/file filename))
;(warn "file found: " filename)
(assoc (dissoc m :remainder)
:handler (->
(fn [req] (file-response reminder
{:root (:dir options)}))
(fn [_req] (file-response reminder
{:root (:dir options)}))
(wrap-content-type options)
(wrap-not-modified)
(wrap-gzip))))))
Expand All @@ -32,14 +32,14 @@

(defrecord ResourcesMaybe [options]
bidi/Matched
(resolve-handler [this m]
(resolve-handler [_this m]
(let [path (url-decode (:remainder m))]
(when (not-empty path)
(when-let [res (io/resource (str (:prefix options) path))]
(when-let [_res (io/resource (str (:prefix options) path))]
;(warn "res: " path)
(assoc (dissoc m :remainder)
:handler (->
(fn [req] (resource-response (str (:prefix options) path)))
(fn [_req] (resource-response (str (:prefix options) path)))
(wrap-content-type options)
(wrap-not-modified) ; awb99 hack
(wrap-gzip)))))))
Expand Down
2 changes: 1 addition & 1 deletion src/modular/webserver/handler/not_found.clj
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@

(def not-found-body "<h1> bummer, not found </h1")

(defn not-found-handler [req]
(defn not-found-handler [_req]
(response/not-found not-found-body))
7 changes: 0 additions & 7 deletions src/modular/webserver/handler/registry.clj

This file was deleted.

18 changes: 0 additions & 18 deletions src/modular/webserver/httpkit.clj

This file was deleted.

1 change: 0 additions & 1 deletion src/modular/webserver/middleware/api.clj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
;[ring.middleware.anti-forgery :refer [wrap-anti-forgery]]
;[ring.middleware.defaults :refer [wrap-defaults site-defaults api-defaults]]
;[ring.middleware.session :refer [wrap-session]]
;[ring.middleware.json :refer [wrap-json-response]]
[modular.webserver.middleware.transit :refer [muuntaja]]
[modular.webserver.middleware.exception :refer [wrap-fallback-exception]]))

Expand Down
2 changes: 1 addition & 1 deletion src/modular/webserver/middleware/bidi.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(ns modular.webserver.middleware.bidi
(:require
[taoensso.timbre :refer [debug info warn error]]
[taoensso.timbre :refer [info]]
[bidi.bidi :as bidi]
[bidi.ring]))

Expand Down
2 changes: 1 addition & 1 deletion src/modular/webserver/middleware/cors.clj
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
([handler allowed-origins]
(fn [request]
(if (= (request :request-method) :options)
(-> (response) ; Don't pass the requests down, just return what the browser needs to continue.
(-> (response "") ; Don't pass the requests down, just return what the browser needs to continue.
(assoc-in [:headers "Access-Control-Allow-Origin"] allowed-origins)
(assoc-in [:headers "Access-Control-Allow-Methods"] "GET,POST,DELETE")
(assoc-in [:headers "Access-Control-Allow-Headers"] "X-Requested-With,Content-Type,Cache-Control,Origin,Accept,Authorization")
Expand Down
2 changes: 1 addition & 1 deletion src/modular/webserver/middleware/dev.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(ns modular.webserver.middleware.dev
(:require
[taoensso.timbre :refer [debug info warn error]]
[taoensso.timbre :refer [warn]]
[prone.middleware :refer [wrap-exceptions]]
[ring.middleware.reload :refer [wrap-reload]]))

Expand Down
2 changes: 1 addition & 1 deletion src/modular/webserver/middleware/exception.clj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(ns modular.webserver.middleware.exception
(:require
[clojure.string]
[taoensso.timbre :refer [debug info error]]))
[taoensso.timbre :refer [error]]))

(defn wrap-fallback-exception
[handler]
Expand Down
1 change: 0 additions & 1 deletion src/modular/webserver/middleware/transit.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
(ns modular.webserver.middleware.transit
(:require
[cognitect.transit :as transit]
[modular.encoding.transit :as e]
[muuntaja.core :as m]))

Expand Down
4 changes: 0 additions & 4 deletions src/modular/webserver/page.clj
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
(ns modular.webserver.page
(:require
[clojure.string :as str]
[hiccup.page :as page]))


(defn- head
([config]
(head config []))
Expand All @@ -29,7 +27,6 @@
[:link {:rel "shortcut icon" :href (str prefix icon)}]]]
(into head extra-head))))


(defn page
([config body]
(page/html5
Expand All @@ -41,4 +38,3 @@
{:mode :html}
(head config extra-head)
body)))

21 changes: 21 additions & 0 deletions src/modular/webserver/server.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
(ns modular.webserver.server
(:require
[taoensso.timbre :as timbre :refer [info error]]
[modular.webserver.server.jetty :as jetty]
[modular.webserver.server.httpkit :as httpkit]))

(defn start [webserver-config ring-handler server-type]
(let [server (case server-type
:jetty (jetty/start-jetty ring-handler webserver-config)
:httpkit (httpkit/start-httpkit ring-handler webserver-config)
(do (error "start-server failed: server type not found: " type)
nil))]
{:server-type server-type
:server server}))

(defn stop [{:keys [server server-type]}]
(when server
(case server-type
:jetty (jetty/stop-jetty server)
:httpkit (httpkit/stop-httpkit server)
(info "there was no server started."))))
24 changes: 24 additions & 0 deletions src/modular/webserver/server/httpkit.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
(ns modular.webserver.server.httpkit
(:require
[taoensso.timbre :as timbre :refer [info]]))

; http://http-kit.github.io/
;https://github.com/http-kit/http-kit
; this dependency is not part of webly dependencies: ;{http-kit "2.5.3"}

(defn start-httpkit
[ring-handler config]
(let [run-server (requiring-resolve 'org.httpkit.server/run-server)
default-opts {:allow-null-path-info true ; omit the trailing slash from your URLs
:ws-max-idle-time 3600000 ; important for nrepl middleware
}
{:keys [port]} config]
(info "Starting Httpkit web server (http:" port ")")
(run-server ring-handler {:port port
:host "0.0.0.0"})))

(defn stop-httpkit [server]
(info "stopping httpkit server..")
;(server) ; Immediate shutdown (breaks existing reqs)
;; Graceful shutdown (wait <=100 msecs for existing reqs to complete):
(server :timeout 100))
Original file line number Diff line number Diff line change
@@ -1,27 +1,38 @@
(ns modular.webserver.jetty
(ns modular.webserver.server.jetty
(:require
[clojure.java.io :as io]
[taoensso.timbre :as timbre :refer [info]]
[ring.adapter.jetty9 :refer [run-jetty]]))
;[ring.adapter.jetty9 :refer [run-jetty]]
[ring.adapter.jetty :refer [run-jetty]]))

(defn run-jetty-server [ring-handler ws-map user-opts]
(defn run-jetty-server [ring-handler {:keys [port ssl-port keystore] :as user-opts}]
(let [default-opts {:allow-null-path-info true ; omit the trailing slash from your URLs
:ws-max-idle-time 3600000 ; important for nrepl middleware
}
ws-opts (if ws-map
{:websockets ws-map} ; {"/api/chsk" (wrap-webly (partial ws-handshake-handler conn))}
{})
{:keys [port ssl-port keystore]} user-opts
https? (and
ssl-port
keystore
(.exists (io/file keystore)))
user-opts (if https?
user-opts
(dissoc user-opts :keystore :ssl-port :key-password))]
(dissoc user-opts :keystore :ssl-port :key-password))

opts (merge default-opts ;ws-opts
user-opts)]
; https://github.com/sunng87/ring-jetty9-adapter
(if https?
(info "Starting Jetty web server (http:" port "https:" ssl-port ")")
(info "Starting Jetty web server (http:" port "https: none)"))
(run-jetty ring-handler (merge default-opts ws-opts user-opts))))
(run-jetty ring-handler opts)))

(defn start-jetty
[ring-handler config]
(run-jetty-server ring-handler
(assoc config :join? false)))

(defn stop-jetty
[server]
;https://github.com/dharrigan/websockets/blob/master/src/online/harrigan/api/router.clj
(info "stopping jetty-server..")
(.stop server) ; stop is async
(.join server)) ; so let's make sure it's really stopped!
26 changes: 0 additions & 26 deletions src/modular/webserver/undertow.clj

This file was deleted.

0 comments on commit dcce2b9

Please sign in to comment.