diff --git a/core/lib/schemas/drakdoo_s.py b/core/lib/schemas/drakdoo_s.py index 961c1da..3603f41 100644 --- a/core/lib/schemas/drakdoo_s.py +++ b/core/lib/schemas/drakdoo_s.py @@ -17,6 +17,6 @@ class DrakdooCallback(BaseModel): title: str message: str period: str - price: str + price: str | None market: DrakdooMarket timestamp: DrakdooTimestamp diff --git a/core/views/hooks.py b/core/views/hooks.py index f229644..0de764a 100644 --- a/core/views/hooks.py +++ b/core/views/hooks.py @@ -1,4 +1,4 @@ -# import re +import re import orjson from django.contrib.auth.mixins import LoginRequiredMixin @@ -17,16 +17,16 @@ from core.views import ObjectCreate, ObjectDelete, ObjectList, ObjectUpdate log = logs.get_logger(__name__) -# def extract_price(message): -# result = re.findall("\d+\.\d+", message) # noqa -# if len(result) != 1: -# log.error(f"Could not extract price from message: {message}") -# return False -# try: -# log.debug(f"Extracted {result[0]} from '{message}'") -# return float(result[0]) -# except ValueError: -# return False +def extract_price(message): + result = re.findall("\d+\.\d+", message) # noqa + if len(result) != 1: + log.error(f"Could not extract price from message: {message}") + return False + try: + log.debug(f"Extracted {result[0]} from '{message}'") + return float(result[0]) + except ValueError: + return False class HookAPI(APIView): @@ -48,15 +48,20 @@ class HookAPI(APIView): log.error(f"HookAPI POST: {e}") return HttpResponseBadRequest(e) - # price = extract_price(hook_resp.message) - # if not price: - # log.debug(f"Could not extract price from message: {hook_resp.message}") - # return HttpResponseBadRequest("Could not extract price from message") - try: - price = float(hook_resp.market.price) - except ValueError: - log.debug(f"Could not extract price from message: {hook_resp.market.price}") - return HttpResponseBadRequest("Could not extract price from message") + if hasattr(hook_resp, "market.price"): + try: + price = float(hook_resp.market.price) + except ValueError: + log.debug( + f"Could not extract price from message: {hook_resp.market.price}" + ) + return HttpResponseBadRequest("Could not extract price from message") + else: + price = extract_price(hook_resp.message) + if not price: + log.debug(f"Could not extract price from message: {hook_resp.message}") + return HttpResponseBadRequest("Could not extract price from message") + base = hook_resp.market.item quote = hook_resp.market.currency symbol = f"{base.upper()}/{quote.upper()}"