Allow retrieval of rpc and config via dependencies
This commit is contained in:
parent
1e38fec61b
commit
a862f19f82
@ -1,14 +1,21 @@
|
||||
from typing import Dict
|
||||
|
||||
from fastapi import APIRouter
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from .deps import get_rpc, get_config
|
||||
from .models import Balances, Ping
|
||||
|
||||
# Public API, requires no auth.
|
||||
router_public = APIRouter()
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get('/ping')
|
||||
def _ping() -> Dict[str, str]:
|
||||
@router_public.get('/ping', response_model=Ping)
|
||||
def ping():
|
||||
"""simple ping version"""
|
||||
return {"status": "pong"}
|
||||
|
||||
|
||||
@router.get('/balance', response_model=Balances)
|
||||
def balance(rpc=Depends(get_rpc), config=Depends(get_config)) -> Dict[str, str]:
|
||||
return rpc._rpc_balance(config['stake_currency'], config.get('fiat_display_currency', ''),)
|
||||
|
9
freqtrade/rpc/api_server2/deps.py
Normal file
9
freqtrade/rpc/api_server2/deps.py
Normal file
@ -0,0 +1,9 @@
|
||||
from .webserver import ApiServer
|
||||
|
||||
|
||||
def get_rpc():
|
||||
return ApiServer._rpc
|
||||
|
||||
|
||||
def get_config():
|
||||
return ApiServer._config
|
29
freqtrade/rpc/api_server2/models.py
Normal file
29
freqtrade/rpc/api_server2/models.py
Normal file
@ -0,0 +1,29 @@
|
||||
from typing import List
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class Ping(BaseModel):
|
||||
status: str
|
||||
|
||||
class Config:
|
||||
schema_extra = {
|
||||
"example": {"status", "pong"}
|
||||
}
|
||||
|
||||
|
||||
class Balance(BaseModel):
|
||||
currency: str
|
||||
free: float
|
||||
balance: float
|
||||
used: float
|
||||
est_stake: float
|
||||
stake: str
|
||||
|
||||
|
||||
class Balances(BaseModel):
|
||||
currencies: List[Balance]
|
||||
total: float
|
||||
symbol: str
|
||||
value: float
|
||||
stake: str
|
||||
note: str
|
@ -1,11 +1,9 @@
|
||||
import threading
|
||||
from typing import Any, Dict
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
import uvicorn
|
||||
|
||||
from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
|
||||
from freqtrade.rpc.rpc import RPCHandler, RPC
|
||||
|
||||
from .uvicorn_threaded import UvicornServer
|
||||
@ -13,10 +11,16 @@ from .uvicorn_threaded import UvicornServer
|
||||
|
||||
class ApiServer(RPCHandler):
|
||||
|
||||
_rpc = None
|
||||
_config = None
|
||||
|
||||
def __init__(self, rpc: RPC, config: Dict[str, Any]) -> None:
|
||||
super().__init__(rpc, config)
|
||||
self._server = None
|
||||
|
||||
ApiServer._rpc = rpc
|
||||
ApiServer._config = config
|
||||
|
||||
self.app = FastAPI()
|
||||
self.configure_app(self.app, self._config)
|
||||
|
||||
@ -30,8 +34,12 @@ class ApiServer(RPCHandler):
|
||||
def send_msg(self, msg: Dict[str, str]) -> None:
|
||||
pass
|
||||
|
||||
def configure_app(self, app, config):
|
||||
def configure_app(self, app: FastAPI, config):
|
||||
from .api_v1 import router_public as api_v1_public
|
||||
from .api_v1 import router as api_v1
|
||||
app.include_router(api_v1_public, prefix="/api/v1")
|
||||
|
||||
# TODO: Include auth dependency!
|
||||
app.include_router(api_v1, prefix="/api/v1")
|
||||
|
||||
app.add_middleware(
|
||||
|
Loading…
Reference in New Issue
Block a user