diff --git a/src/pricehist/sources/coindesk.py b/src/pricehist/sources/coindesk.py index f52c219..9623f76 100644 --- a/src/pricehist/sources/coindesk.py +++ b/src/pricehist/sources/coindesk.py @@ -1,5 +1,7 @@ import dataclasses import json +import logging +import sys from decimal import Decimal import requests @@ -45,6 +47,13 @@ class CoinDesk(BaseSource): ] def fetch(self, series): + if series.base != "BTC" or series.quote == "BTC": + # BTC is the only valid base. BTC as the quote will return BTC/USD. + logging.critical( + f"Invalid pair '{'/'.join([series.base, series.quote])}'. " + f"Run 'pricehist source {self.id()} --symbols' to list valid pairs." + ) + sys.exit(1) data = self._data(series) prices = [] for (d, v) in data["bpi"].items(): diff --git a/src/pricehist/sources/ecb.py b/src/pricehist/sources/ecb.py index 3c913cf..c5c1f96 100644 --- a/src/pricehist/sources/ecb.py +++ b/src/pricehist/sources/ecb.py @@ -1,4 +1,6 @@ import dataclasses +import logging +import sys from datetime import datetime, timedelta from decimal import Decimal @@ -41,6 +43,12 @@ class ECB(BaseSource): return [(f"EUR/{c}", f"Euro against {iso[c].name}") for c in currencies] def fetch(self, series): + if series.base != "EUR": # EUR is the only valid base. + logging.critical( + f"Invalid pair '{'/'.join([series.base, series.quote])}'. " + f"Run 'pricehist source {self.id()} --symbols' to list valid pairs." + ) + sys.exit(1) almost_90_days_ago = (datetime.now().date() - timedelta(days=85)).isoformat() root = self._data(series.start < almost_90_days_ago)