First commit

This commit is contained in:
Andros Fenollosa
2020-05-19 00:25:12 +02:00
commit 2ba2a42c2f
14 changed files with 327 additions and 0 deletions

5
src/api2smtp/config.clj Normal file
View File

@@ -0,0 +1,5 @@
(ns api2smtp.config
(:require
[clj-yaml.core :as yaml]))
(def config (yaml/parse-string (slurp "config.yaml")))

24
src/api2smtp/core.clj Normal file
View File

@@ -0,0 +1,24 @@
(ns api2smtp.core
(:require
[api2smtp.config :refer [config]]
[ring.middleware.defaults :refer [site-defaults wrap-defaults]]
[ring.middleware.reload :refer [wrap-reload]]
[ring.middleware.cors :refer [wrap-cors]]
[api2smtp.urls :refer [all-routes]]
[ring.adapter.jetty :refer [run-jetty]]) (:gen-class))
(def wrapped-handler
;; Handler middlewares
(-> all-routes
(wrap-defaults (assoc-in site-defaults [:security :anti-forgery] false))
(wrap-cors
:access-control-allow-origin [(re-pattern (if (config :debug) ".*" (config :domain)))]
:access-control-allow-methods [:get])
(#(if (config :debug) (wrap-reload %) %))))
(defn -main [& args]
;; Main
;; Welcome
(prn (str "Open " (config :domain) ":" (config :port)))
;; Run web server
(run-jetty wrapped-handler {:port (config :port)}))

20
src/api2smtp/urls.clj Normal file
View File

@@ -0,0 +1,20 @@
(ns api2smtp.urls
(:require
[compojure.core :refer [defroutes GET]]
[compojure.route :as route]
[api2smtp.views.public :as view-public]))
(defroutes public
;; Urls public pages
(GET "/" [] view-public/index)
(GET "/api" [] view-public/api))
(defroutes resources-routes
;; Resources (statics)
(route/resources "/")
(route/not-found view-public/page-404))
(def all-routes
;; Wrap routers. "resources-routes" should always be the last.
(compojure.core/routes public resources-routes))

View File

@@ -0,0 +1,20 @@
;;;; Views public web
(ns api2smtp.views.public
(:require
[tadam.templates :refer [render-HTML render-JSON render-404]]
))
(defn index
;; View HTML
[req]
(render-HTML req "public/welcome.html" {}))
(defn api
;; View JSON
[req]
(render-JSON req {:result true}))
(defn page-404
;; View page 404
[req]
(render-404 req "public/404.html" {}))