This commit is contained in:
GamerNoTitle 2024-09-22 18:17:24 +08:00
parent 71fcf6183d
commit 0a37911ea1

View File

@ -22,6 +22,7 @@ BUILD_NUMBER = "2024.1.4+Build+CL-241.18034.45"
# Configure static files
app.mount("/static", StaticFiles(directory="app/static"), name="static")
# Parse xml response
def get_xml_data(server: str, ticket_path: str):
client = httpx.Client(verify=False)
@ -40,17 +41,21 @@ def get_xml_data(server: str, ticket_path: str):
"server_uid": root.find("serverUid").text,
"validation_deadline_period": root.find("validationDeadlinePeriod").text,
"validation_period": root.find("validationPeriod").text,
"message": root.find("message").text
"message": root.find("message").text,
}
except httpx.ReadTimeout:
return {"error": "Timeout: Please try again later."}
except Exception as e:
return {"error": f"An unexpected error occurred: {str(e)}. It seems that this server is not avaliable or you can try again later."}
return {
"error": f"An unexpected error occurred: {str(e)}. It seems that this server is not avaliable or you can try again later."
}
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
@app.post("/fetch", response_class=HTMLResponse)
async def fetch_data(request: Request, server: str = Form(...)):
RELEASE_TICKET_PATH = f"/rpc/releaseTicket.action?buildNumber={BUILD_NUMBER}&clientVersion=16&hostName={DESKTOP_NAME}&machineId={MACHINE_ID}&productCode=cfc7082d-ae43-4978-a2a2-46feb1679405&productFamilyId=cfc7082d-ae43-4978-a2a2-46feb1679405&salt=1726973268812&secure=false&ticketId=rsoaehfbbg&userName={USERNAME}"
@ -59,18 +64,23 @@ async def fetch_data(request: Request, server: str = Form(...)):
release_ticket_data = get_xml_data(server, RELEASE_TICKET_PATH)
obtain_ticket_data = get_xml_data(server, OBTAIN_TICKET_PATH)
return templates.TemplateResponse("index.html", {
"request": request,
"release_data": release_ticket_data,
"obtain_data": obtain_ticket_data,
"server": server
})
return templates.TemplateResponse(
"index.html",
{
"request": request,
"release_data": release_ticket_data,
"obtain_data": obtain_ticket_data,
"server": server,
},
)
@app.get("/api/fetch")
@app.post("/api/fetch")
async def api_fetch(server: str = Form(...)):
return await handle_fetch(server)
async def handle_fetch(server: str):
RELEASE_TICKET_PATH = f"/rpc/releaseTicket.action?buildNumber={BUILD_NUMBER}&clientVersion=16&hostName={DESKTOP_NAME}&machineId={MACHINE_ID}&productCode=cfc7082d-ae43-4978-a2a2-46feb1679405&productFamilyId=cfc7082d-ae43-4978-a2a2-46feb1679405&salt=1726973268812&secure=false&ticketId=rsoaehfbbg&userName={USERNAME}"
OBTAIN_TICKET_PATH = f"/rpc/obtainTicket.action?buildDate=20240409&{BUILD_NUMBER}&clientVersion=16&hostName={DESKTOP_NAME}&machineId={MACHINE_ID}&productCode=cfc7082d-ae43-4978-a2a2-46feb1679405&productFamilyId=cfc7082d-ae43-4978-a2a2-46feb1679405&salt=1726973269845&secure=false&userName={USERNAME}&version={VERSION}&versionNumber={VERSION}"
@ -84,11 +94,13 @@ async def handle_fetch(server: str):
elif obtain_ticket_data.get("response_code") == "Error":
available = False
return JSONResponse(content={
"available": available,
"message": obtain_ticket_data.get("message", ""),
"data": {
"release_ticket_data": release_ticket_data,
"obtain_ticket_data": obtain_ticket_data,
return JSONResponse(
content={
"available": available,
"message": obtain_ticket_data.get("message", ""),
"data": {
"release_ticket_data": release_ticket_data,
"obtain_ticket_data": obtain_ticket_data,
},
}
})
)