Skip to content

Commit 0eeef0a

Browse files
add new endpoint for getting dev container raw data
Signed-off-by: Rajesh Jonnalagadda <[email protected]> chore: make repo_url optional Signed-off-by: Rajesh Jonnalagadda <[email protected]>
1 parent 2dbc975 commit 0eeef0a

File tree

1 file changed

+32
-9
lines changed

1 file changed

+32
-9
lines changed

main.py

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
from http.client import HTTPException
12
import logging
23
import os
34
import json
45
from datetime import datetime
6+
from typing import Optional
57
from fasthtml.common import *
68
from dotenv import load_dotenv
79
from supabase_client import supabase
@@ -96,16 +98,9 @@ def home():
9698
footer_section()),
9799
*scripts)
98100

99-
# Define routes
100-
@rt("/")
101-
async def get():
102-
return home()
103-
104-
@rt("/generate", methods=["post"])
105-
async def post(repo_url: str, regenerate: bool = False):
106-
logging.info(f"Generating devcontainer.json for: {repo_url}")
107101

108-
# Normalize the repo_url by stripping trailing slashes
102+
async def generateDevContainer(repo_url:str, regenerate=False):
103+
109104
repo_url = repo_url.rstrip('/')
110105

111106
try:
@@ -162,7 +157,35 @@ async def post(repo_url: str, regenerate: bool = False):
162157
except Exception as e:
163158
logging.error(f"Error while saving to database: {str(e)}")
164159
raise
160+
161+
return devcontainer_json, source
162+
except Exception as e:
163+
logging.error(f"Error generating devcontainer.json: {str(e)}")
164+
raise e
165+
166+
167+
@rt("/", methods=["get"])
168+
async def get(repo_url: Optional[str]=None):
169+
if not repo_url:
170+
return home()
171+
try:
172+
devcontainer_json, source = await generateDevContainer(repo_url)
173+
return devcontainer_json
174+
except Exception as e:
175+
logging.error(f"Error generating devcontainer.json: {str(e)}")
176+
raise HTTPException(500, f"An error occurred while generating the devcontainer.json: {str(e)}")
177+
178+
179+
@rt("/generate", methods=["post"])
180+
async def post(repo_url: str, regenerate: bool = False):
181+
logging.info(f"Generating devcontainer.json for: {repo_url}")
165182

183+
# Normalize the repo_url by stripping trailing slashes
184+
repo_url = repo_url.rstrip('/')
185+
186+
try:
187+
devcontainer_json, source = await generateDevContainer(repo_url, regenerate=regenerate)
188+
166189
return Div(
167190
Article(f"Devcontainer.json {'found in ' + source if source in ['database', 'repository'] else 'generated'}"),
168191
Pre(

0 commit comments

Comments
 (0)