diff --git a/src/backend/app/services/ave/client.py b/src/backend/app/services/ave/client.py index 1f510cf..4a610cf 100644 --- a/src/backend/app/services/ave/client.py +++ b/src/backend/app/services/ave/client.py @@ -90,6 +90,22 @@ class AveCloudClient: return data.get("data", []) raise Exception(f"Failed to fetch klines: {data}") + async def get_token_price(self, token_id: str) -> Optional[Dict[str, Any]]: + url = f"{self.DATA_API_URL}/v2/tokens/price" + async with httpx.AsyncClient() as client: + response = await client.post( + url, + headers=self._data_headers(), + json={"token_ids": [token_id]}, + timeout=30.0, + ) + response.raise_for_status() + data = response.json() + if data.get("status") == 200: + prices = data.get("data", {}) + return prices.get(token_id) + return None + async def get_trending_tokens( self, chain: Optional[str] = None, limit: int = 20 ) -> List[Dict[str, Any]]: diff --git a/src/backend/app/services/backtest/ave_client.py b/src/backend/app/services/backtest/ave_client.py deleted file mode 100644 index 3ac1d48..0000000 --- a/src/backend/app/services/backtest/ave_client.py +++ /dev/null @@ -1,70 +0,0 @@ -import httpx -from typing import List, Dict, Any, Optional -from datetime import datetime - - -class AveCloudClient: - BASE_URL = "https://prod.ave-api.com" - - def __init__(self, api_key: str, plan: str = "free"): - self.api_key = api_key - self.plan = plan - - def _headers(self) -> Dict[str, str]: - return {"X-API-KEY": self.api_key} - - async def get_klines( - self, - token_id: str, - interval: str = "1h", - limit: int = 100, - start_time: Optional[int] = None, - end_time: Optional[int] = None, - ) -> List[Dict[str, Any]]: - url = f"{self.BASE_URL}/v2/klines/token/{token_id}" - params = {"interval": interval, "limit": limit} - if start_time: - params["start_time"] = start_time - if end_time: - params["end_time"] = end_time - - async with httpx.AsyncClient() as client: - response = await client.get( - url, headers=self._headers(), params=params, timeout=30.0 - ) - response.raise_for_status() - data = response.json() - if data.get("status") == 200: - return data.get("data", []) - raise Exception(f"Failed to fetch klines: {data}") - - async def get_token_price(self, token_id: str) -> Optional[Dict[str, Any]]: - url = f"{self.BASE_URL}/v2/tokens/price" - async with httpx.AsyncClient() as client: - response = await client.post( - url, - headers=self._headers(), - json={"token_ids": [token_id]}, - timeout=30.0, - ) - response.raise_for_status() - data = response.json() - if data.get("status") == 200: - prices = data.get("data", {}) - return prices.get(token_id) - return None - - async def get_batch_prices(self, token_ids: List[str]) -> Dict[str, Dict[str, Any]]: - url = f"{self.BASE_URL}/v2/tokens/price" - async with httpx.AsyncClient() as client: - response = await client.post( - url, - headers=self._headers(), - json={"token_ids": token_ids}, - timeout=30.0, - ) - response.raise_for_status() - data = response.json() - if data.get("status") == 200: - return data.get("data", {}) - return {} diff --git a/src/backend/app/services/backtest/engine.py b/src/backend/app/services/backtest/engine.py index e5b716b..6229790 100644 --- a/src/backend/app/services/backtest/engine.py +++ b/src/backend/app/services/backtest/engine.py @@ -2,7 +2,7 @@ import uuid import asyncio from datetime import datetime from typing import Dict, Any, List, Optional -from .ave_client import AveCloudClient +from ..ave.client import AveCloudClient class BacktestEngine: diff --git a/src/backend/app/services/simulate/engine.py b/src/backend/app/services/simulate/engine.py index 721fb0b..1fdf5b1 100644 --- a/src/backend/app/services/simulate/engine.py +++ b/src/backend/app/services/simulate/engine.py @@ -2,7 +2,7 @@ import uuid import asyncio from datetime import datetime from typing import Dict, Any, List, Optional -from ..backtest.ave_client import AveCloudClient +from ..ave.client import AveCloudClient class SimulateEngine: