aboutsummaryrefslogtreecommitdiff
path: root/src/pics/handler/view.clj
blob: 34ee712565123de54edf51a7474dc2da3f0f32b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(ns pics.handler.view
  (:require [clojure.string :as cstr]
            [ring.util.response :as ruresp]
            [hiccup2.core :as hiccup])
  (:import java.io.File
           java.util.Date
           (java.text SimpleDateFormat)))

(defn handle-src [req]
  (->> (get-in req [:reitit.core/match :path-params :file-name])
       (str "./img/")
       ruresp/file-response))

(defn handle [req]
  (let [file (->> (.listFiles (File. "./img/"))
                  (filter #(cstr/starts-with? (.getName ^File %)
                                              (str (get-in req [:reitit.core/match :path-params :id]) ".")))
                  first)]
    (if (some? file)
      (-> [:html
           [:head
            [:title "pics"]
            [:meta {:name "robots" :content "noindex,nofollow"}]]
           [:body {:style {:background-color :aquamarine}}
            [:img {:src   (str "/src/" (.getName ^File file))
                   :style {:max-height    "90%"
                           :max-width     "90%"
                           :border-radius "1em"
                           :display       :block
                           :margin        :auto}}]
            (let [last-modified (Date. (.lastModified ^File file))
                  date-format (SimpleDateFormat. "dd.MM.yyyy")]
              [:div {:style {:position   :fixed
                             :bottom     0
                             :text-align :center
                             :width      "100%"}}
               [:p {:style {:font-family      "Arial, sans-serif"
                            :background-color :white
                            :border-radius    "1em"
                            :display          :inline-block
                            :padding          "0.3em"}}
                (str "Uploaded on " (.format date-format last-modified))]])]]
          hiccup/html
          str
          ruresp/response)
      (ruresp/not-found "Not found."))))