crabbly commited on
Commit
956be74
·
1 Parent(s): 7a14c18

Update routing

Browse files
Files changed (1) hide show
  1. main.py +64 -3
main.py CHANGED
@@ -1,6 +1,7 @@
1
  import os
2
  import requests
3
- from fastapi import FastAPI, UploadFile, File, Form, Query, Request
 
4
  from fastapi.middleware.cors import CORSMiddleware
5
  from fastapi.concurrency import run_in_threadpool # <--- FIX: Added Threadpool
6
  import uvicorn
@@ -54,7 +55,14 @@ async def proxy_process(request: Request, file: UploadFile = File(...), password
54
  file_bytes = await file.read()
55
  headers = {"Authorization": f"Bearer {HF_TOKEN}"}
56
  files = {"file": (file.filename, file_bytes, file.content_type)}
57
- data = {"password": password, "username": username}
 
 
 
 
 
 
 
58
 
59
  # FIX: Define the blocking request
60
  def make_post():
@@ -70,5 +78,58 @@ async def proxy_process(request: Request, file: UploadFile = File(...), password
70
  except Exception as e:
71
  return {"success": False, "message": f"Proxy Error (Internal): {str(e)}"}
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  if __name__ == "__main__":
74
- uvicorn.run(app, host="0.0.0.0", port=int(os.getenv("PORT", 7860)))
 
1
  import os
2
  import requests
3
+ from fastapi import FastAPI, UploadFile, File, Form, Query, Request, Body
4
+ from fastapi.responses import Response
5
  from fastapi.middleware.cors import CORSMiddleware
6
  from fastapi.concurrency import run_in_threadpool # <--- FIX: Added Threadpool
7
  import uvicorn
 
55
  file_bytes = await file.read()
56
  headers = {"Authorization": f"Bearer {HF_TOKEN}"}
57
  files = {"file": (file.filename, file_bytes, file.content_type)}
58
+ form = await request.form()
59
+ data = {}
60
+ for key, value in form.multi_items():
61
+ if key == "file" or hasattr(value, "filename"):
62
+ continue
63
+ data[key] = str(value)
64
+ data.setdefault("password", password)
65
+ data.setdefault("username", username)
66
 
67
  # FIX: Define the blocking request
68
  def make_post():
 
78
  except Exception as e:
79
  return {"success": False, "message": f"Proxy Error (Internal): {str(e)}"}
80
 
81
+
82
+ @app.post("/proxy_batch_stage")
83
+ async def proxy_batch_stage(payload: dict = Body(...)):
84
+ username = str(payload.get("username", ""))
85
+ base_url = DEV_URL if username.strip().lower() == "devtest" else PROD_URL
86
+ target_url = f"{base_url}/batch_stage"
87
+ headers = {"Authorization": f"Bearer {HF_TOKEN}"}
88
+
89
+ def make_post():
90
+ return requests.post(target_url, headers=headers, json=payload, timeout=120)
91
+
92
+ try:
93
+ response = await run_in_threadpool(make_post)
94
+ response.raise_for_status()
95
+ return response.json()
96
+ except requests.exceptions.RequestException as e:
97
+ return {"success": False, "message": f"Proxy Error (Hugging Face): {str(e)}", "rows": []}
98
+ except Exception as e:
99
+ return {"success": False, "message": f"Proxy Error (Internal): {str(e)}", "rows": []}
100
+
101
+
102
+ @app.get("/proxy_preview/{session_id}/{row_id}/{preview_type}")
103
+ async def proxy_preview(session_id: str, row_id: str, preview_type: str, username: str = Query(""), size: str = Query("thumb")):
104
+ base_url = DEV_URL if username.strip().lower() == "devtest" else PROD_URL
105
+ target_url = f"{base_url}/preview/{session_id}/{row_id}/{preview_type}"
106
+ headers = {"Authorization": f"Bearer {HF_TOKEN}"}
107
+
108
+ def make_get():
109
+ return requests.get(target_url, headers=headers, params={"size": size}, timeout=30)
110
+
111
+ response = await run_in_threadpool(make_get)
112
+ if response.status_code >= 400:
113
+ return Response(content=response.content, status_code=response.status_code, media_type=response.headers.get("content-type", "text/plain"))
114
+ return Response(content=response.content, media_type=response.headers.get("content-type", "image/jpeg"))
115
+
116
+
117
+ @app.post("/proxy_preview_session_clear")
118
+ async def proxy_preview_session_clear(payload: dict = Body(...)):
119
+ username = str(payload.get("username", ""))
120
+ base_url = DEV_URL if username.strip().lower() == "devtest" else PROD_URL
121
+ target_url = f"{base_url}/preview_session/clear"
122
+ headers = {"Authorization": f"Bearer {HF_TOKEN}"}
123
+
124
+ def make_post():
125
+ return requests.post(target_url, headers=headers, json=payload, timeout=20)
126
+
127
+ try:
128
+ response = await run_in_threadpool(make_post)
129
+ response.raise_for_status()
130
+ return response.json()
131
+ except Exception as e:
132
+ return {"success": False, "message": f"Proxy Error: {str(e)}"}
133
+
134
  if __name__ == "__main__":
135
+ uvicorn.run(app, host="0.0.0.0", port=int(os.getenv("PORT", 7860)))