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 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 = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
@router.get('/ping')
|
@router_public.get('/ping', response_model=Ping)
|
||||||
def _ping() -> Dict[str, str]:
|
def ping():
|
||||||
"""simple ping version"""
|
"""simple ping version"""
|
||||||
return {"status": "pong"}
|
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 typing import Any, Dict
|
||||||
|
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
import uvicorn
|
import uvicorn
|
||||||
|
|
||||||
from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
|
|
||||||
from freqtrade.rpc.rpc import RPCHandler, RPC
|
from freqtrade.rpc.rpc import RPCHandler, RPC
|
||||||
|
|
||||||
from .uvicorn_threaded import UvicornServer
|
from .uvicorn_threaded import UvicornServer
|
||||||
@ -13,10 +11,16 @@ from .uvicorn_threaded import UvicornServer
|
|||||||
|
|
||||||
class ApiServer(RPCHandler):
|
class ApiServer(RPCHandler):
|
||||||
|
|
||||||
|
_rpc = None
|
||||||
|
_config = None
|
||||||
|
|
||||||
def __init__(self, rpc: RPC, config: Dict[str, Any]) -> None:
|
def __init__(self, rpc: RPC, config: Dict[str, Any]) -> None:
|
||||||
super().__init__(rpc, config)
|
super().__init__(rpc, config)
|
||||||
self._server = None
|
self._server = None
|
||||||
|
|
||||||
|
ApiServer._rpc = rpc
|
||||||
|
ApiServer._config = config
|
||||||
|
|
||||||
self.app = FastAPI()
|
self.app = FastAPI()
|
||||||
self.configure_app(self.app, self._config)
|
self.configure_app(self.app, self._config)
|
||||||
|
|
||||||
@ -30,8 +34,12 @@ class ApiServer(RPCHandler):
|
|||||||
def send_msg(self, msg: Dict[str, str]) -> None:
|
def send_msg(self, msg: Dict[str, str]) -> None:
|
||||||
pass
|
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
|
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.include_router(api_v1, prefix="/api/v1")
|
||||||
|
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
|
Loading…
Reference in New Issue
Block a user