Compare commits

..

2 commits

4 changed files with 37 additions and 19 deletions

View file

@ -0,0 +1,19 @@
from fastapi import APIRouter, Depends
import requests
from app.core.config import settings
from app.core.websocket import start_finnhub_websocket
router = APIRouter()
@router.get("/marketnews")
async def market_news():
"""
API to get latest market news.
"""
params = {
"token": settings.FINNHUB_API_KEY,
"category": "general"
}
response = requests.get("https://finnhub.io/api/v1/news", params=params)
return response.json()

View file

@ -5,31 +5,15 @@ from app.core.websocket import start_finnhub_websocket
router = APIRouter()
@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
response = requests.get("https://finnhub.io/api/v1/search", params=params)
return response.json()
@router.get("/marketnews")
@router.get("/market-status")
async def market_news():
"""
API to get latest market news.
"""
params = {
"token": settings.FINNHUB_API_KEY,
"category": "general"
"exchange": "US"
}
response = requests.get("https://finnhub.io/api/v1/news", params=params)
response = requests.get("https://finnhub.io/api/v1/market-status", params=params)
return response.json()

View file

@ -33,3 +33,16 @@ async def quote(symbol: str):
response = requests.get("https://finnhub.io/api/v1/quote", params=params)
return response.json()
@router.get("/profile")
async def profile(symbol: str):
"""
API to get company profile.
"""
params = {
"token": settings.FINNHUB_API_KEY,
"symbol": symbol
}
response = requests.get("https://finnhub.io/api/v1/stock/profile2", params=params)
return response.json()

View file

@ -2,6 +2,7 @@ from fastapi import FastAPI
from app.core.config import settings
from app.api.v1.routes import stock
from app.api.v1.routes import news
from app.api.v1.routes import market
from app.ws.routes import trades
app = FastAPI()
@ -11,6 +12,7 @@ app = FastAPI()
async def startup_event():
app.include_router(stock.router, prefix="/api/v1")
app.include_router(news.router, prefix="/api/v1")
app.include_router(market.router, prefix="/api/v1")
app.include_router(trades.router, prefix="/ws")
pass