diff --git a/resources/system.edn b/resources/system.edn index df5e4f3..7539444 100644 --- a/resources/system.edn +++ b/resources/system.edn @@ -52,7 +52,8 @@ :ws/binance {: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 {:query-fn #ig/ref :db.sql/query-fn} @@ -67,4 +68,5 @@ :strike/ticker {:query-fn #ig/ref :db.sql/query-fn :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"]}} diff --git a/src/clj/pmagnus/btcdata/strike/ticker.clj b/src/clj/pmagnus/btcdata/strike/ticker.clj index 167fc16..33f6a86 100644 --- a/src/clj/pmagnus/btcdata/strike/ticker.clj +++ b/src/clj/pmagnus/btcdata/strike/ticker.clj @@ -136,19 +136,24 @@ (log/error e "Strike poll failed"))))))) (defmethod ig/init-key :strike/ticker - [_ {:keys [query-fn api-key sats-eur-amount]}] - (log/info "Starting Strike ticker poller") - (let [client (HttpClient/newHttpClient) - running? (atom true) - 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})) + [_ {:keys [query-fn api-key sats-eur-amount enabled?] :or {enabled? "true"}}] + (if-not (= enabled? "true") + (do (log/info "Strike ticker disabled") + {:running? (atom false) + :future nil + :latest-rates (atom nil)}) + (do (log/info "Starting Strike ticker poller") + (let [client (HttpClient/newHttpClient) + running? (atom true) + 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 [_ {:keys [running? future]}] (log/info "Stopping Strike ticker poller") (reset! running? false) - (future-cancel future)) + (when future (future-cancel future))) diff --git a/src/clj/pmagnus/btcdata/ws/binance.clj b/src/clj/pmagnus/btcdata/ws/binance.clj index a7239d7..beeb8a4 100644 --- a/src/clj/pmagnus/btcdata/ws/binance.clj +++ b/src/clj/pmagnus/btcdata/ws/binance.clj @@ -71,17 +71,21 @@ (.join)))) (defmethod ig/init-key :ws/binance - [_ {:keys [query-fn uri]}] - (log/info "Starting Binance WebSocket listener:" uri) - (let [latest-price (atom nil) - state (atom {:running? true - :last-write 0 - :buffer (StringBuilder.) - :ws nil}) - ws (connect! uri query-fn state latest-price)] - (swap! state assoc :ws ws) - {:state state - :latest-price latest-price})) + [_ {:keys [query-fn uri enabled?] :or {enabled? "true"}}] + (if-not (= enabled? "true") + (do (log/info "Binance WebSocket disabled") + {:state (atom {:running? false}) + :latest-price (atom nil)}) + (do (log/info "Starting Binance WebSocket listener:" uri) + (let [latest-price (atom nil) + state (atom {:running? true + :last-write 0 + :buffer (StringBuilder.) + :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 [_ {:keys [state]}]