Require base=BTC for coindesk and base=EUR for ecb.

This commit is contained in:
Chris Berkhout 2021-07-02 12:16:41 +02:00
parent 23be58ae74
commit 494a721ccd
2 changed files with 17 additions and 0 deletions

View file

@ -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():

View file

@ -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)