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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -10
app.py CHANGED
@@ -1,28 +1,42 @@
1
  import gradio as gr
2
  import os
3
  import json
 
4
 
5
  PROJECTS_DIR = "projects"
6
  os.makedirs(PROJECTS_DIR, exist_ok=True)
7
 
8
- def load_project(project):
 
 
 
9
  filename = os.path.join(PROJECTS_DIR, os.path.basename(project))
10
- if not os.path.exists(filename):
11
  return gr.Response(status_code=404, body="Project not found.")
12
  with open(filename, "r") as f:
13
  return json.load(f)
14
 
15
- def save_project(project, request: gr.Request):
 
 
 
 
 
 
 
16
  filename = os.path.join(PROJECTS_DIR, os.path.basename(project))
17
- data = request.json
18
  with open(filename, "w") as f:
19
- json.dump(data, f)
20
- return { "success": True }
21
 
22
  with gr.Blocks() as demo:
23
- gr.Markdown("### GrapesJS Storage Backend")
24
 
25
- demo.api("/load", load_project, methods=["GET"])
26
- demo.api("/save", save_project, methods=["POST"])
 
 
27
 
28
- demo.launch()
 
 
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()