Add BINANCE_ENABLED and STRIKE_ENABLED env flags

Skip live WebSocket/API connections when set to false.
Defaults to true so Docker keeps fetching.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 15:54:50 +01:00
co-authored by Claude Opus 4.6
parent 793c63927c
commit 130815e32f
3 changed files with 35 additions and 24 deletions
+4 -2
View File
@@ -52,7 +52,8 @@
:ws/binance :ws/binance
{:query-fn #ig/ref :db.sql/query-fn {:query-fn #ig/ref :db.sql/query-fn
:uri "wss://stream.binance.com:9443/ws/btcusdt@trade"} :uri "wss://stream.binance.com:9443/ws/btcusdt@trade"
:enabled? #or [#env BINANCE_ENABLED "true"]}
:kraken/ohlc :kraken/ohlc
{:query-fn #ig/ref :db.sql/query-fn} {:query-fn #ig/ref :db.sql/query-fn}
@@ -67,4 +68,5 @@
:strike/ticker :strike/ticker
{:query-fn #ig/ref :db.sql/query-fn {:query-fn #ig/ref :db.sql/query-fn
:api-key #env STRIKE_API_KEY :api-key #env STRIKE_API_KEY
:sats-eur-amount #or [#env SATS_EUR_AMOUNT "55"]}} :sats-eur-amount #or [#env SATS_EUR_AMOUNT "55"]
:enabled? #or [#env STRIKE_ENABLED "true"]}}
+16 -11
View File
@@ -136,19 +136,24 @@
(log/error e "Strike poll failed"))))))) (log/error e "Strike poll failed")))))))
(defmethod ig/init-key :strike/ticker (defmethod ig/init-key :strike/ticker
[_ {:keys [query-fn api-key sats-eur-amount]}] [_ {:keys [query-fn api-key sats-eur-amount enabled?] :or {enabled? "true"}}]
(log/info "Starting Strike ticker poller") (if-not (= enabled? "true")
(let [client (HttpClient/newHttpClient) (do (log/info "Strike ticker disabled")
running? (atom true) {:running? (atom false)
latest-rates (atom nil) :future nil
fee-cache (atom nil) :latest-rates (atom nil)})
fut (start-poll-loop! client api-key query-fn running? latest-rates sats-eur-amount fee-cache)] (do (log/info "Starting Strike ticker poller")
{:running? running? (let [client (HttpClient/newHttpClient)
:future fut running? (atom true)
:latest-rates latest-rates})) latest-rates (atom nil)
fee-cache (atom nil)
fut (start-poll-loop! client api-key query-fn running? latest-rates sats-eur-amount fee-cache)]
{:running? running?
:future fut
:latest-rates latest-rates}))))
(defmethod ig/halt-key! :strike/ticker (defmethod ig/halt-key! :strike/ticker
[_ {:keys [running? future]}] [_ {:keys [running? future]}]
(log/info "Stopping Strike ticker poller") (log/info "Stopping Strike ticker poller")
(reset! running? false) (reset! running? false)
(future-cancel future)) (when future (future-cancel future)))
+15 -11
View File
@@ -71,17 +71,21 @@
(.join)))) (.join))))
(defmethod ig/init-key :ws/binance (defmethod ig/init-key :ws/binance
[_ {:keys [query-fn uri]}] [_ {:keys [query-fn uri enabled?] :or {enabled? "true"}}]
(log/info "Starting Binance WebSocket listener:" uri) (if-not (= enabled? "true")
(let [latest-price (atom nil) (do (log/info "Binance WebSocket disabled")
state (atom {:running? true {:state (atom {:running? false})
:last-write 0 :latest-price (atom nil)})
:buffer (StringBuilder.) (do (log/info "Starting Binance WebSocket listener:" uri)
:ws nil}) (let [latest-price (atom nil)
ws (connect! uri query-fn state latest-price)] state (atom {:running? true
(swap! state assoc :ws ws) :last-write 0
{:state state :buffer (StringBuilder.)
:latest-price latest-price})) :ws nil})
ws (connect! uri query-fn state latest-price)]
(swap! state assoc :ws ws)
{:state state
:latest-price latest-price}))))
(defmethod ig/halt-key! :ws/binance (defmethod ig/halt-key! :ws/binance
[_ {:keys [state]}] [_ {:keys [state]}]