improved timestamp & added card

This commit is contained in:
jem 2020-06-24 19:53:04 +02:00
parent 0cfdf7fc02
commit 7775dc88f5
6 changed files with 63 additions and 3132 deletions

3118
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,7 @@
<body>
<div id="masto-embed"
account_name="team"
xaccount_id="2"
coment_in_account_id="2"
host_url="https://social.meissa-gmbh.de">
Here the timeline will appear.
</div>

View file

@ -7,6 +7,7 @@
:dependencies
[[orchestra "2019.02.06-1"]
[hiccups "0.3.0"]
[com.andrewmcveigh/cljs-time "0.5.2"]
[cider/cider-nrepl "0.21.0"]]
:dev-http {8080 "public"}
:builds

View file

@ -17,6 +17,7 @@
(:require
["mastodon-api" :as Mastodon]
[dda.masto-embed.infra :as infra]
[cljs-time.format :as t]
[clojure.spec.alpha :as s]
[orchestra.core :refer-macros [defn-spec]]))
@ -26,14 +27,28 @@
(defn mastojs->edn [response]
(-> response .-data infra/js->edn))
(defn masto->html [statuus]
(defn mastocard->html [card]
(when (some? card)
(let [{:keys [title description image url]} card]
[:div {:class "card" :url url}
(when (some? image)
[:img {:src image}])
[:h1 title]
[:p description]])))
(defn masto->html [statuses]
[:ul
(map (fn [status] [:li
[:h2
[:a {:href (get-in status [:account :url])}
(:created_at status)]]
(:content status)
(:card status)]) statuus)])
(map (fn [status]
(let [{:keys [created_at card]} status
date (t/parse created_at)]
[:li
[:h2
[:a {:href (get-in status [:account :url])}
(t/unparse (t/formatters :date) date)
(t/unparse (t/formatters :hour-minute-second) date)]]
(:content status)
(mastocard->html card)]))
statuses)])
(defn-spec mastodon-client any?

View file

@ -72,7 +72,7 @@
(print account-name)
(print account-id)
(->> statuus
(take 4)
(take 14)
(api/masto->html)
(render-html)
(infra/debug)

View file

@ -19,7 +19,7 @@
[cljs.test :refer (deftest is)]
[dda.masto-embed.api :as sut]))
(def statuus [{:mentions []
(def statuses [{:mentions []
:emojis []
:tags []
:reblog
@ -153,11 +153,44 @@
:created_at "2020-05-17T10:12:10.403Z"
:spoiler_text ""}])
(deftest test-mastodon-2-html
(deftest test-mastodon->html
(is (= [:ul
'([:li
[:h2 [:a {:href "https://social.meissa-gmbh.de/@team"}
"2020-05-17T10:12:10.403Z"]]
"2020-05-17" "10:12:10"]]
"<p>We&apos;ve a new asciicast ... </p>"
[:p ]])]
(sut/masto->html statuus))))
nil])]
(sut/masto->html statuses))))
(deftest empty-card-should-produce-empty-result
(is (= nil
(sut/mastocard->html nil))))
(def link-card {:description "A comprehensive free SSL test for your public web servers.",
:author_url "", :width 0, :type "link", :embed_url "",
:title "SSL Server Test (Powered by Qualys SSL Labs)",
:provider_name "", :url "https://www.ssllabs.com/ssltest/",
:author_name "", :image nil, :provider_url "", :height 0, :html ""})
(deftest link-card-should-show-desc-and-link
(is (= [:div {:class "card", :url "https://www.ssllabs.com/ssltest/"}
nil
[:h1 "SSL Server Test (Powered by Qualys SSL Labs)"]
[:p "A comprehensive free SSL test for your public web servers."]]
(sut/mastocard->html link-card))))
(def link-card-with-image
{:description "Cryogen's core. Contribute to DomainDrivenArchitecture/cryogen-core development by creating an account on GitHub.", :author_url "", :width 400, :type "link", :embed_url "",
:title "DomainDrivenArchitecture/cryogen-core", :provider_name "",
:url "https://github.com/DomainDrivenArchitecture/cryogen-core", :author_name "",
:image "https://cf.mastohost.com/v1/AUTH_91eb37814936490c95da7b85993cc2ff/socialmeissagmbhde/cache/preview_cards/images/000/017/635/original/5634071238f1f91f.png",
:provider_url "", :height 400, :html ""})
(deftest link-card-should-show-image-and-desc-and-link
(is (= [:div {:class "card", :url "https://github.com/DomainDrivenArchitecture/cryogen-core"}
[:img {:src "https://cf.mastohost.com/v1/AUTH_91eb37814936490c95da7b85993cc2ff/socialmeissagmbhde/cache/preview_cards/images/000/017/635/original/5634071238f1f91f.png"}]
[:h1 "DomainDrivenArchitecture/cryogen-core"]
[:p "Cryogen's core. Contribute to DomainDrivenArchitecture/cryogen-core development by creating an account on GitHub."]]
(sut/mastocard->html link-card-with-image))))