From 46666aa994cfd9ef760343db8f4a597561f40cd4 Mon Sep 17 00:00:00 2001 From: Per Magnus Petersen Date: Fri, 27 Feb 2026 14:43:19 +0100 Subject: [PATCH] Fix Frankfurter integration: require namespace, use v1 API, show converted BTC prices - Require frankfurter.rates namespace in core.clj so Integrant can find it - Use /v1/ prefix for self-hosted Frankfurter API - Display BTC price converted to EUR and DKK instead of raw exchange rates - Remove unused host port mapping for Frankfurter container Co-Authored-By: Claude Opus 4.6 --- docker-compose.yml | 2 -- src/clj/pmagnus/btcdata/core.clj | 3 ++- src/clj/pmagnus/btcdata/frankfurter/rates.clj | 2 +- src/clj/pmagnus/btcdata/web/routes/api.clj | 12 ++++++------ 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0b828e5..5ca20fd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,5 +17,3 @@ services: frankfurter: image: lineofflight/frankfurter restart: unless-stopped - ports: - - "8080:8080" diff --git a/src/clj/pmagnus/btcdata/core.clj b/src/clj/pmagnus/btcdata/core.clj index d3e96c6..022b73a 100644 --- a/src/clj/pmagnus/btcdata/core.clj +++ b/src/clj/pmagnus/btcdata/core.clj @@ -17,7 +17,8 @@ [pmagnus.btcdata.ws.binance] ;; Pollers [pmagnus.btcdata.kraken.ohlc] - [pmagnus.btcdata.kraken.ohlc-daily]) + [pmagnus.btcdata.kraken.ohlc-daily] + [pmagnus.btcdata.frankfurter.rates]) (:gen-class)) (defonce system (atom nil)) diff --git a/src/clj/pmagnus/btcdata/frankfurter/rates.clj b/src/clj/pmagnus/btcdata/frankfurter/rates.clj index 8ff3ff5..92ef03e 100644 --- a/src/clj/pmagnus/btcdata/frankfurter/rates.clj +++ b/src/clj/pmagnus/btcdata/frankfurter/rates.clj @@ -11,7 +11,7 @@ (defn- fetch-rates "GET /latest?from=USD&to=EUR,DKK from Frankfurter. Returns {:EUR x :DKK y}." [^HttpClient client base-url] - (let [url (str base-url "/latest?from=USD&to=EUR,DKK") + (let [url (str base-url "/v1/latest?from=USD&to=EUR,DKK") request (-> (HttpRequest/newBuilder) (.uri (URI. url)) (.header "Accept" "application/json") diff --git a/src/clj/pmagnus/btcdata/web/routes/api.clj b/src/clj/pmagnus/btcdata/web/routes/api.clj index f6bc400..682619e 100644 --- a/src/clj/pmagnus/btcdata/web/routes/api.clj +++ b/src/clj/pmagnus/btcdata/web/routes/api.clj @@ -23,8 +23,8 @@ (cond-> {:price (str price) :prev_price (when prev-price (str prev-price)) :recorded_at (str recorded-at)} - rates (assoc :eur (str (:eur rates)) - :dkk (str (:dkk rates)))))) + rates (assoc :price_eur (str (.multiply (bigdec price) (:eur rates))) + :price_dkk (str (.multiply (bigdec price) (:dkk rates))))))) (def ^:private ts-fmt (DateTimeFormatter/ofPattern "dd-MM HH:mm:ss")) @@ -42,11 +42,11 @@ "
" "

$" (format "%,.2f" p) "

" (when rates - (let [eur (double (:eur rates)) - dkk (double (:dkk rates))] + (let [p-eur (double (.multiply (bigdec price) (:eur rates))) + p-dkk (double (.multiply (bigdec price) (:dkk rates)))] (str "
" - "EUR " (format "%.4f" eur) "" - "DKK " (format "%.4f" dkk) "" + "\u20AC" (format "%,.2f" p-eur) "" + "" (format "%,.2f" p-dkk) " kr" "
"))) "

Updated " ts "

" "
")))