Skip to content

Commit

Permalink
parse event and prepare for handling
Browse files Browse the repository at this point in the history
  • Loading branch information
nohaapav committed Oct 30, 2017
1 parent dad2067 commit 23c5f05
Showing 1 changed file with 34 additions and 19 deletions.
53 changes: 34 additions & 19 deletions src/cljs/swarmpit/eventsource.cljs
Original file line number Diff line number Diff line change
@@ -1,25 +1,40 @@
(ns swarmpit.eventsource
(:require [swarmpit.routes :as routes]))
(:require [swarmpit.routes :as routes]
[clojure.walk :refer [keywordize-keys]]))

(defn subscribe
[uri]
(js/EventSource. uri))
(defn parse-event
[event]
(-> (.-data event)
(js/JSON.parse)
(js->clj)
(keywordize-keys)))

(defn add-listener!
[evs eventname callback]
(.addEventListener evs eventname callback))
(defn handle-docker-event!
[event-message]
"TODO: Handler docker events"
(print event-message))

(defn handle-event!
[event-data]
(let [event-source (:From event-data)
event-message (:Message event-data)]
(case event-source
"DOCKER" (handle-docker-event! event-message)
(print (str "Unknown event source: " event-source)))))

(defn init!
[]
(let [event-source (subscribe (routes/path-for-backend :events))]
(add-listener! event-source "message"
(fn [event]
(let [data (.-data event)]
(print data))))
(add-listener! event-source "open"
(fn [_]
(print "Swarmpit event connection was opened")))
(add-listener! event-source "error"
(fn [event]
(let [state (.-readyState event)]
(print state))))))
(let [event-source (js/EventSource. (routes/path-for-backend :events))]
(.addEventListener event-source "message"
(fn [event]
(let [event-data (parse-event event)]
(handle-event! event-data))))
(.addEventListener event-source "open"
(fn [_]
(print "Swarmpit event connection was opened")))
(.addEventListener event-source "error"
(fn [event]
(let [state (.-readyState event)]
(print state))))))


0 comments on commit 23c5f05

Please sign in to comment.