|
| 1 | +from http.client import HTTPException |
1 | 2 | import logging
|
2 | 3 | import os
|
3 | 4 | import json
|
4 | 5 | from datetime import datetime
|
| 6 | +from typing import Optional |
5 | 7 | from fasthtml.common import *
|
6 | 8 | from dotenv import load_dotenv
|
7 | 9 | from supabase_client import supabase
|
@@ -96,16 +98,9 @@ def home():
|
96 | 98 | footer_section()),
|
97 | 99 | *scripts)
|
98 | 100 |
|
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}") |
107 | 101 |
|
108 |
| - # Normalize the repo_url by stripping trailing slashes |
| 102 | +async def generateDevContainer(repo_url:str, regenerate=False): |
| 103 | + |
109 | 104 | repo_url = repo_url.rstrip('/')
|
110 | 105 |
|
111 | 106 | try:
|
@@ -162,7 +157,35 @@ async def post(repo_url: str, regenerate: bool = False):
|
162 | 157 | except Exception as e:
|
163 | 158 | logging.error(f"Error while saving to database: {str(e)}")
|
164 | 159 | 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}") |
165 | 182 |
|
| 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 | + |
166 | 189 | return Div(
|
167 | 190 | Article(f"Devcontainer.json {'found in ' + source if source in ['database', 'repository'] else 'generated'}"),
|
168 | 191 | Pre(
|
|
0 commit comments