From 6dcf78736aff48cf14d12d592a04007974f6d75b Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Wed, 7 Dec 2022 20:51:52 +0100 Subject: [PATCH] Fix book getting --- src/app/services/cache_updater.py | 3 +++ src/app/services/library_client.py | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/app/services/cache_updater.py b/src/app/services/cache_updater.py index e9cd85f..1b734c4 100644 --- a/src/app/services/cache_updater.py +++ b/src/app/services/cache_updater.py @@ -117,6 +117,9 @@ async def cache_file_by_book_id( return None raise Retry(defer=15) + if book is None: + return None + if file_type not in book.available_types: raise FileTypeNotAllowed(f"{file_type} not in {book.available_types}!") diff --git a/src/app/services/library_client.py b/src/app/services/library_client.py index 7b691d9..e392d88 100644 --- a/src/app/services/library_client.py +++ b/src/app/services/library_client.py @@ -1,5 +1,5 @@ from datetime import date -from typing import Generic, TypeVar +from typing import Generic, TypeVar, Optional import httpx from pydantic import BaseModel @@ -48,12 +48,15 @@ class BookDetail(Book): AUTH_HEADERS = {"Authorization": env_config.LIBRARY_API_KEY} -async def get_book(book_id: int) -> BookDetail: +async def get_book(book_id: int) -> Optional[BookDetail]: async with httpx.AsyncClient(timeout=2 * 60) as client: response = await client.get( f"{env_config.LIBRARY_URL}/api/v1/books/{book_id}", headers=AUTH_HEADERS ) + if response.status_code != 200: + return None + return BookDetail.parse_obj(response.json())