Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,42 +1,34 @@
|
|
| 1 |
-
|
| 2 |
-
import
|
| 3 |
-
import
|
| 4 |
-
|
| 5 |
|
|
|
|
| 6 |
PROJECTS_DIR = "projects"
|
| 7 |
os.makedirs(PROJECTS_DIR, exist_ok=True)
|
| 8 |
|
|
|
|
| 9 |
def load_project(project: str):
|
| 10 |
"""
|
| 11 |
GET /load?project=FILENAME
|
|
|
|
| 12 |
"""
|
| 13 |
-
|
| 14 |
-
if not os.path.isfile(
|
| 15 |
-
|
| 16 |
-
with open(
|
| 17 |
-
|
|
|
|
| 18 |
|
| 19 |
-
|
|
|
|
| 20 |
"""
|
| 21 |
POST /save?project=FILENAME
|
| 22 |
Body: JSON project data
|
|
|
|
| 23 |
"""
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
with open(filename, "w") as f:
|
| 30 |
-
json.dump(data, f, indent=2)
|
| 31 |
-
return {"success": True}
|
| 32 |
-
|
| 33 |
-
with gr.Blocks() as demo:
|
| 34 |
-
gr.Markdown("## GrapesJS Storage Backend 👷♂️")
|
| 35 |
-
|
| 36 |
-
# Register API routes on the underlying FastAPI app:
|
| 37 |
-
# demo.app is the FastAPI instance
|
| 38 |
-
demo.app.add_api_route("/load", load_project, methods=["GET"])
|
| 39 |
-
demo.app.add_api_route("/save", save_project, methods=["POST"])
|
| 40 |
-
|
| 41 |
-
if __name__ == "__main__":
|
| 42 |
-
demo.launch()
|
|
|
|
| 1 |
+
# app.py
|
| 2 |
+
from fastapi import FastAPI, HTTPException, Request
|
| 3 |
+
from fastapi.responses import JSONResponse
|
| 4 |
+
import os, json
|
| 5 |
|
| 6 |
+
app = FastAPI()
|
| 7 |
PROJECTS_DIR = "projects"
|
| 8 |
os.makedirs(PROJECTS_DIR, exist_ok=True)
|
| 9 |
|
| 10 |
+
@app.get("/load")
|
| 11 |
def load_project(project: str):
|
| 12 |
"""
|
| 13 |
GET /load?project=FILENAME
|
| 14 |
+
Returns the JSON contents of projects/FILENAME
|
| 15 |
"""
|
| 16 |
+
path = os.path.join(PROJECTS_DIR, os.path.basename(project))
|
| 17 |
+
if not os.path.isfile(path):
|
| 18 |
+
raise HTTPException(status_code=404, detail="Project not found")
|
| 19 |
+
with open(path, "r", encoding="utf-8") as f:
|
| 20 |
+
data = json.load(f)
|
| 21 |
+
return JSONResponse(content=data)
|
| 22 |
|
| 23 |
+
@app.post("/save")
|
| 24 |
+
async def save_project(project: str, request: Request):
|
| 25 |
"""
|
| 26 |
POST /save?project=FILENAME
|
| 27 |
Body: JSON project data
|
| 28 |
+
Writes the data back into projects/FILENAME
|
| 29 |
"""
|
| 30 |
+
body = await request.json()
|
| 31 |
+
path = os.path.join(PROJECTS_DIR, os.path.basename(project))
|
| 32 |
+
with open(path, "w", encoding="utf-8") as f:
|
| 33 |
+
json.dump(body, f, indent=2)
|
| 34 |
+
return JSONResponse(content={"success": True})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|