diff options
| author | eltrac <hi@eltr.ac> | 2026-03-01 15:25:54 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-03-01 15:25:54 +0800 |
| commit | ecb8c41937ac06ff631f8bc7ca6c3e8176b76654 (patch) | |
| tree | a39ef81b298e131f640ce57002e5ee68a3bf24cf /src | |
| parent | 8a64e8cda6e16d4481aaf75418760c07a49e7013 (diff) | |
feat(webmention): validate urls upon receiving w
Diffstat (limited to 'src')
| -rw-r--r-- | src/weepinbell/handler.clj | 13 | ||||
| -rw-r--r-- | src/weepinbell/receiver.clj | 24 |
2 files changed, 32 insertions, 5 deletions
diff --git a/src/weepinbell/handler.clj b/src/weepinbell/handler.clj index f484377..e6c972b 100644 --- a/src/weepinbell/handler.clj +++ b/src/weepinbell/handler.clj @@ -1,11 +1,14 @@ (ns weepinbell.handler - (:require [compojure.core :refer [defroutes GET]] + (:require [compojure.core :refer [defroutes POST]] [compojure.route :as route] - [ring.middleware.defaults :refer [wrap-defaults site-defaults]])) + [ring.middleware.defaults :refer [wrap-defaults api-defaults]] + [weepinbell.config :refer [get-config]] + [weepinbell.receiver :refer [receive]])) -(defroutes app-routes - (GET "/" [] "Hello World") +(defroutes api-routes + (POST (get-config :endpoint) [source target] + (receive {:s source :t target})) (route/not-found "Not Found")) (def app - (wrap-defaults app-routes site-defaults)) + (wrap-defaults api-routes api-defaults)) diff --git a/src/weepinbell/receiver.clj b/src/weepinbell/receiver.clj new file mode 100644 index 0000000..74ec4a9 --- /dev/null +++ b/src/weepinbell/receiver.clj @@ -0,0 +1,24 @@ +(ns weepinbell.receiver + (:require [clojure.string :refer [starts-with?]])) + +(defn validate-url [url] + (or (starts-with? url "http://") + (starts-with? url "https://"))) +(defn validate-urls [s t] + (and (validate-url s) (validate-url t))) + +#_(defn validate-source [s]) + +#_(defn validate-target [t]) + +(defn validate [s t] + (validate-urls s t) + #_(validate-source s) + #_(validate-target t)) + +(defn receive [wm] + (let [{:keys [s t]} wm] + (if (validate s t) + "Valid Webmention" + "Invalid Webmention"))) + |
