SalexAI commited on
Commit
b1dffb5
·
verified ·
1 Parent(s): fb3fb06

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -29
app.py CHANGED
@@ -1,42 +1,34 @@
1
- import gradio as gr
2
- import os
3
- import json
4
- from fastapi import Request
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
- filename = os.path.join(PROJECTS_DIR, os.path.basename(project))
14
- if not os.path.isfile(filename):
15
- return gr.Response(status_code=404, body="Project not found.")
16
- with open(filename, "r") as f:
17
- return json.load(f)
 
18
 
19
- async def save_project(request: Request):
 
20
  """
21
  POST /save?project=FILENAME
22
  Body: JSON project data
 
23
  """
24
- project = request.query_params.get("project")
25
- if not project:
26
- return gr.Response(status_code=400, body="Missing project parameter.")
27
- filename = os.path.join(PROJECTS_DIR, os.path.basename(project))
28
- data = await request.json()
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})