2015-12-05 01:03:29 +01:00
|
|
|
(ns mailhead.routes.home
|
|
|
|
(:require [mailhead.layout :as layout]
|
2015-12-06 11:13:11 +01:00
|
|
|
[mailhead.visualize :as v]
|
2015-12-06 13:14:34 +01:00
|
|
|
[mailhead.parser :as parser]
|
2015-12-05 11:31:48 +01:00
|
|
|
[compojure.core :refer [defroutes GET POST]]
|
2015-12-06 14:58:48 +01:00
|
|
|
[ring.util.response :refer [redirect]]
|
2015-12-06 12:31:42 +01:00
|
|
|
[ring.util.http-response :refer [ok content-type]]
|
2015-12-05 01:03:29 +01:00
|
|
|
[clojure.java.io :as io]))
|
|
|
|
|
|
|
|
(defn home-page []
|
2015-12-05 01:18:39 +01:00
|
|
|
(layout/render "home.html"))
|
2015-12-05 01:03:29 +01:00
|
|
|
|
|
|
|
(defn about-page []
|
|
|
|
(layout/render "about.html"))
|
|
|
|
|
2015-12-06 13:14:34 +01:00
|
|
|
(defn show-sample [index]
|
2015-12-06 15:18:27 +01:00
|
|
|
(let [email-content (slurp (str "sample-data/example" index ".eml"))]
|
2015-12-06 13:14:34 +01:00
|
|
|
(show-result email-content)))
|
|
|
|
|
|
|
|
;; TODO: Show more information (mail round trip time, ...)
|
|
|
|
(defn show-result [message-string]
|
2015-12-06 14:58:48 +01:00
|
|
|
(if (empty? (parser/parse message-string))
|
|
|
|
(layout/render "parser-error.html" {:mailheader message-string})
|
|
|
|
(let [parsed-email (parser/parse message-string)
|
|
|
|
token (v/draw parsed-email)]
|
|
|
|
(layout/render "result.html"
|
|
|
|
{:mailheader message-string
|
|
|
|
:email parsed-email
|
|
|
|
:token token}))))
|
2015-12-06 12:31:42 +01:00
|
|
|
|
|
|
|
(defn generated-image [token]
|
|
|
|
(-> (clojure.java.io/input-stream (str "generated-images/" token ".svg"))
|
|
|
|
ok
|
|
|
|
(content-type "image/svg+xml")))
|
2015-12-05 11:31:48 +01:00
|
|
|
|
2015-12-05 01:03:29 +01:00
|
|
|
(defroutes home-routes
|
|
|
|
(GET "/" [] (home-page))
|
2015-12-06 12:31:42 +01:00
|
|
|
(GET "/image/:token" [token] (generated-image token))
|
2015-12-06 13:14:34 +01:00
|
|
|
(POST "/analyze" [mailheader] (show-result mailheader))
|
|
|
|
(GET "/example/:index" [index] (show-sample index))
|
2015-12-05 01:03:29 +01:00
|
|
|
(GET "/about" [] (about-page)))
|