lots
This commit is contained in:
@@ -3,6 +3,9 @@ from datetime import datetime, timedelta
|
||||
import csv
|
||||
import io
|
||||
from app.services.external_api.base_external_service import BaseExternalService
|
||||
import aiohttp
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class TCGCSVService(BaseExternalService):
|
||||
def __init__(self):
|
||||
@@ -16,7 +19,14 @@ class TCGCSVService(BaseExternalService):
|
||||
async def get_products_and_prices(self, game_id: str, group_id: int) -> str:
|
||||
"""Fetch products and prices for a specific group from TCGCSV API"""
|
||||
endpoint = f"tcgplayer/{game_id}/{group_id}/ProductsAndPrices.csv"
|
||||
return await self._make_request("GET", endpoint, headers={"Accept": "text/csv"})
|
||||
try:
|
||||
return await self._make_request("GET", endpoint, headers={"Accept": "text/csv"})
|
||||
except aiohttp.ClientResponseError as e:
|
||||
if e.status == 403:
|
||||
logger.error(f"Request failed: {e}")
|
||||
return None
|
||||
else:
|
||||
raise
|
||||
|
||||
async def get_categories(self) -> Dict[str, Any]:
|
||||
"""Fetch all categories from TCGCSV API"""
|
||||
@@ -26,7 +36,14 @@ class TCGCSVService(BaseExternalService):
|
||||
async def get_archived_prices_for_date(self, date_str: str) -> bytes:
|
||||
"""Fetch archived prices from TCGCSV API"""
|
||||
endpoint = f"archive/tcgplayer/prices-{date_str}.ppmd.7z"
|
||||
return await self._make_request("GET", endpoint, binary=True)
|
||||
try:
|
||||
return await self._make_request("GET", endpoint, binary=True)
|
||||
except aiohttp.ClientResponseError as e:
|
||||
if e.status == 403:
|
||||
logger.error(f"Request failed: {e}")
|
||||
return None
|
||||
else:
|
||||
raise
|
||||
|
||||
async def get_tcgcsv_date_range(self, start_date: datetime, end_date: datetime) -> List[datetime]:
|
||||
"""Get a date range for a given start and end date"""
|
||||
|
Reference in New Issue
Block a user