Update app.py
Browse files
app.py
CHANGED
|
@@ -21,10 +21,10 @@ logger = logging.getLogger("CloudBot")
|
|
| 21 |
app = FastAPI(title="cTra Webhook Bot")
|
| 22 |
|
| 23 |
# Config from Environment variables (Hugging Face Secrets)
|
| 24 |
-
CLIENT_ID = os.environ.get("CTRADER_CLIENT_ID", "")
|
| 25 |
-
CLIENT_SECRET = os.environ.get("CTRADER_CLIENT_SECRET", "")
|
| 26 |
-
CTRADER_ENV = os.environ.get("CTRADER_ENV", "demo").lower() # "demo" or "live"
|
| 27 |
-
raw_vol = os.environ.get("TRADE_VOLUME", "1000")
|
| 28 |
try:
|
| 29 |
vol_float = float(raw_vol)
|
| 30 |
if vol_float < 10.0:
|
|
@@ -504,6 +504,7 @@ async def dashboard(request: Request):
|
|
| 504 |
|
| 505 |
@app.get("/login")
|
| 506 |
async def login(request: Request):
|
|
|
|
| 507 |
# Retrieve App redirect URI dynamically (supporting Hugging Face reverse proxy)
|
| 508 |
space_host = os.environ.get("SPACE_HOST")
|
| 509 |
if space_host:
|
|
@@ -515,12 +516,12 @@ async def login(request: Request):
|
|
| 515 |
|
| 516 |
logger.info(f"Login URL redirect_uri generated: {redirect_uri}")
|
| 517 |
|
|
|
|
| 518 |
auth_url = (
|
| 519 |
f"https://id.ctrader.com/my/settings/openapi/grantingaccess"
|
| 520 |
f"?client_id={CLIENT_ID}"
|
| 521 |
-
f"&redirect_uri={redirect_uri}"
|
| 522 |
f"&scope=trading"
|
| 523 |
-
f"&
|
| 524 |
)
|
| 525 |
return RedirectResponse(auth_url)
|
| 526 |
|
|
@@ -556,7 +557,7 @@ async def callback(request: Request, code: str = None):
|
|
| 556 |
}
|
| 557 |
|
| 558 |
# Fetch account ID via protobuf socket (token endpoint doesn't return accounts)
|
| 559 |
-
account_id = os.environ.get("CTRADER_ACCOUNT_ID", "")
|
| 560 |
if not account_id:
|
| 561 |
try:
|
| 562 |
host = "live.ctraderapi.com" if CTRADER_ENV == "live" else "demo.ctraderapi.com"
|
|
|
|
| 21 |
app = FastAPI(title="cTra Webhook Bot")
|
| 22 |
|
| 23 |
# Config from Environment variables (Hugging Face Secrets)
|
| 24 |
+
CLIENT_ID = os.environ.get("CTRADER_CLIENT_ID", "").strip()
|
| 25 |
+
CLIENT_SECRET = os.environ.get("CTRADER_CLIENT_SECRET", "").strip()
|
| 26 |
+
CTRADER_ENV = os.environ.get("CTRADER_ENV", "demo").lower().strip() # "demo" or "live"
|
| 27 |
+
raw_vol = os.environ.get("TRADE_VOLUME", "1000").strip()
|
| 28 |
try:
|
| 29 |
vol_float = float(raw_vol)
|
| 30 |
if vol_float < 10.0:
|
|
|
|
| 504 |
|
| 505 |
@app.get("/login")
|
| 506 |
async def login(request: Request):
|
| 507 |
+
import urllib.parse
|
| 508 |
# Retrieve App redirect URI dynamically (supporting Hugging Face reverse proxy)
|
| 509 |
space_host = os.environ.get("SPACE_HOST")
|
| 510 |
if space_host:
|
|
|
|
| 516 |
|
| 517 |
logger.info(f"Login URL redirect_uri generated: {redirect_uri}")
|
| 518 |
|
| 519 |
+
encoded_redirect_uri = urllib.parse.quote(redirect_uri)
|
| 520 |
auth_url = (
|
| 521 |
f"https://id.ctrader.com/my/settings/openapi/grantingaccess"
|
| 522 |
f"?client_id={CLIENT_ID}"
|
|
|
|
| 523 |
f"&scope=trading"
|
| 524 |
+
f"&redirect_uri={encoded_redirect_uri}"
|
| 525 |
)
|
| 526 |
return RedirectResponse(auth_url)
|
| 527 |
|
|
|
|
| 557 |
}
|
| 558 |
|
| 559 |
# Fetch account ID via protobuf socket (token endpoint doesn't return accounts)
|
| 560 |
+
account_id = os.environ.get("CTRADER_ACCOUNT_ID", "").strip()
|
| 561 |
if not account_id:
|
| 562 |
try:
|
| 563 |
host = "live.ctraderapi.com" if CTRADER_ENV == "live" else "demo.ctraderapi.com"
|