mirror of
https://github.com/ryanamay/sparkle.git
synced 2024-09-20 04:20:35 +00:00
Compare commits
2 commits
9f751e39df
...
8dd9bcadb9
Author | SHA1 | Date | |
---|---|---|---|
8dd9bcadb9 | |||
bee6e96d53 |
5 changed files with 23 additions and 31 deletions
12
Dockerfile
12
Dockerfile
|
@ -2,10 +2,10 @@
|
||||||
# base layer
|
# base layer
|
||||||
FROM python:3.12-alpine as base
|
FROM python:3.12-alpine as base
|
||||||
|
|
||||||
ARG DEV=false
|
ENV VIRTUAL_ENV=/sparkle/.venv \
|
||||||
|
PATH="/sparkle/.venv/bin:$PATH"
|
||||||
|
|
||||||
ENV VIRTUAL_ENV=/app/.venv \
|
RUN python -m venv $VIRTUAL_ENV
|
||||||
PATH="/app/.venv/bin:$PATH"
|
|
||||||
|
|
||||||
RUN apk update && \
|
RUN apk update && \
|
||||||
apk add libpq
|
apk add libpq
|
||||||
|
@ -26,7 +26,7 @@ RUN pip install poetry==1.8.3
|
||||||
|
|
||||||
# Install the app
|
# Install the app
|
||||||
COPY pyproject.toml poetry.lock ./
|
COPY pyproject.toml poetry.lock ./
|
||||||
RUN poetry install dev --no-root && rm -rf $POETRY_CACHE_DIR;
|
RUN poetry install --no-root && rm -rf $POETRY_CACHE_DIR;
|
||||||
|
|
||||||
FROM base as runtime
|
FROM base as runtime
|
||||||
|
|
||||||
|
@ -34,7 +34,5 @@ COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}
|
||||||
|
|
||||||
COPY app ./app
|
COPY app ./app
|
||||||
|
|
||||||
WORKDIR /sparkle/app
|
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||||
|
|
||||||
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
||||||
|
|
||||||
|
|
|
@ -5,25 +5,18 @@ from app.core.websocket import start_finnhub_websocket
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@router.get("/price/{symbol}")
|
@router.get("/search")
|
||||||
async def get_stock_price(symbol: str):
|
async def lookup(query: str, exchange: str | None = None):
|
||||||
url = f"https://finnhub.io/api/v1/quote?symbol={symbol}&token={settings.FINNHUB_API_KEY}"
|
"""
|
||||||
response = requests.get(url)
|
API to search for a stock symbol.
|
||||||
return response.json()
|
"""
|
||||||
|
params = {
|
||||||
|
"token": settings.FINNHUB_API_KEY,
|
||||||
|
"q": query
|
||||||
|
}
|
||||||
|
|
||||||
|
if exchange:
|
||||||
|
params["exchange"] = exchange
|
||||||
|
|
||||||
@router.get("/start-websocket")
|
response = requests.get("https://finnhub.io/api/v1/search", params=params)
|
||||||
async def start_websocket():
|
return response.json()
|
||||||
"""
|
|
||||||
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"}
|
|
|
@ -1,4 +1,5 @@
|
||||||
import os
|
import os
|
||||||
|
import finnhub
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
@ -6,5 +7,6 @@ load_dotenv()
|
||||||
class Settings:
|
class Settings:
|
||||||
FINNHUB_API_KEY: str = os.getenv("FINNHUB_API_KEY")
|
FINNHUB_API_KEY: str = os.getenv("FINNHUB_API_KEY")
|
||||||
FINNHUB_WEBSOCKET_URL: str = "wss://ws.finnhub.io?token=" + 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()
|
settings = Settings()
|
||||||
|
|
|
@ -4,12 +4,12 @@ from app.api.v1.routes import stock
|
||||||
from app.ws.routes import trades
|
from app.ws.routes import trades
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
app.include_router(stock.router, prefix="/api/v1")
|
|
||||||
app.include_router(trades.router, prefix="/ws")
|
|
||||||
|
|
||||||
@app.on_event("startup")
|
@app.on_event("startup")
|
||||||
async def startup_event():
|
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
|
pass
|
||||||
|
|
||||||
@app.on_event("shutdown")
|
@app.on_event("shutdown")
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
services:
|
services:
|
||||||
sparkle:
|
sparkle:
|
||||||
container_name: sparkle
|
container_name: sparkle
|
||||||
image: sparkle:lastest
|
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
|
|
Loading…
Reference in a new issue