From 8dd9bcadb9d14558479018feb401116cb2941463 Mon Sep 17 00:00:00 2001 From: Ryana May Que Date: Fri, 6 Sep 2024 10:50:47 +0800 Subject: [PATCH] add: basic stock search --- app/api/v1/routes/stock.py | 33 +++++++++++++-------------------- app/core/config.py | 2 ++ app/main.py | 6 +++--- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/app/api/v1/routes/stock.py b/app/api/v1/routes/stock.py index 1f71fad..4f6a300 100644 --- a/app/api/v1/routes/stock.py +++ b/app/api/v1/routes/stock.py @@ -5,25 +5,18 @@ from app.core.websocket import start_finnhub_websocket router = APIRouter() -@router.get("/price/{symbol}") -async def get_stock_price(symbol: str): - url = f"https://finnhub.io/api/v1/quote?symbol={symbol}&token={settings.FINNHUB_API_KEY}" - response = requests.get(url) - return response.json() +@router.get("/search") +async def lookup(query: str, exchange: str | None = None): + """ + API to search for a stock symbol. + """ + params = { + "token": settings.FINNHUB_API_KEY, + "q": query + } + if exchange: + params["exchange"] = exchange -@router.get("/start-websocket") -async def start_websocket(): - """ - Endpoint to start the Finnhub WebSocket connection. - """ - start_finnhub_websocket() - return {"message": "WebSocket connection started"} - -@router.get("/stop-websocket") -async def stop_websocket(): - """ - Endpoint to stop the Finnhub WebSocket connection. - """ - # Code to stop the WebSocket connection - return {"message": "WebSocket connection stopped"} \ No newline at end of file + response = requests.get("https://finnhub.io/api/v1/search", params=params) + return response.json() \ No newline at end of file diff --git a/app/core/config.py b/app/core/config.py index 2197d75..1725cb2 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -1,4 +1,5 @@ import os +import finnhub from dotenv import load_dotenv load_dotenv() @@ -6,5 +7,6 @@ load_dotenv() class Settings: FINNHUB_API_KEY: str = os.getenv("FINNHUB_API_KEY") FINNHUB_WEBSOCKET_URL: str = "wss://ws.finnhub.io?token=" + FINNHUB_API_KEY + client: finnhub.Client = finnhub.Client(api_key=FINNHUB_API_KEY) settings = Settings() diff --git a/app/main.py b/app/main.py index 9ffa11a..7121252 100644 --- a/app/main.py +++ b/app/main.py @@ -4,12 +4,12 @@ from app.api.v1.routes import stock from app.ws.routes import trades app = FastAPI() -app.include_router(stock.router, prefix="/api/v1") -app.include_router(trades.router, prefix="/ws") + @app.on_event("startup") async def startup_event(): - # Code to run on app startup, e.g., connect to WebSocket + app.include_router(stock.router, prefix="/api/v1") + app.include_router(trades.router, prefix="/ws") pass @app.on_event("shutdown")