Add core devterm module files
Some checks failed
CI / test (3.10) (push) Failing after 30s
CI / test (3.12) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.8) (push) Has been cancelled
CI / test (3.9) (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / typecheck (push) Has been cancelled
CI / build-package (push) Has been cancelled
Some checks failed
CI / test (3.10) (push) Failing after 30s
CI / test (3.12) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.8) (push) Has been cancelled
CI / test (3.9) (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / typecheck (push) Has been cancelled
CI / build-package (push) Has been cancelled
This commit is contained in:
141
devterm/server/routes.py
Normal file
141
devterm/server/routes.py
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
from fastapi import APIRouter, Request
|
||||||
|
from fastapi.responses import HTMLResponse
|
||||||
|
from fastapi.templating import Jinja2Templates
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from devterm.tools.json_tool import format_json, validate_json
|
||||||
|
from devterm.tools.jwt_tool import decode_jwt
|
||||||
|
from devterm.tools.cron_tool import validate_cron, get_next_run
|
||||||
|
from devterm.tools.base64_tool import encode_base64, decode_base64
|
||||||
|
from devterm.tools.url_tool import encode_url, decode_url
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
templates = Jinja2Templates(directory=str(Path(__file__).parent.parent / "templates"))
|
||||||
|
|
||||||
|
|
||||||
|
async def get_body(request: Request) -> str:
|
||||||
|
body = await request.body()
|
||||||
|
return body.decode("utf-8") if body else ""
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/json", response_class=HTMLResponse)
|
||||||
|
async def json_page(request: Request):
|
||||||
|
return templates.TemplateResponse("json.html", {"request": request})
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/json/format")
|
||||||
|
async def format_json_endpoint(request: Request):
|
||||||
|
data = await get_body(request)
|
||||||
|
try:
|
||||||
|
if not data:
|
||||||
|
return {"error": "No data provided"}
|
||||||
|
result = format_json(data)
|
||||||
|
return {"result": result, "valid": True}
|
||||||
|
except Exception as e:
|
||||||
|
return {"error": str(e), "valid": False}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/json/validate")
|
||||||
|
async def validate_json_endpoint(request: Request):
|
||||||
|
data = await get_body(request)
|
||||||
|
try:
|
||||||
|
if not data:
|
||||||
|
return {"error": "No data provided"}
|
||||||
|
is_valid = validate_json(data)
|
||||||
|
return {"valid": is_valid}
|
||||||
|
except Exception as e:
|
||||||
|
return {"error": str(e), "valid": False}
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/jwt", response_class=HTMLResponse)
|
||||||
|
async def jwt_page(request: Request):
|
||||||
|
return templates.TemplateResponse("jwt.html", {"request": request})
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/jwt/decode")
|
||||||
|
async def decode_jwt_endpoint(request: Request):
|
||||||
|
token = await get_body(request)
|
||||||
|
try:
|
||||||
|
if not token:
|
||||||
|
return {"error": "No token provided"}
|
||||||
|
result = decode_jwt(token)
|
||||||
|
return result
|
||||||
|
except Exception as e:
|
||||||
|
return {"error": str(e)}
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/cron", response_class=HTMLResponse)
|
||||||
|
async def cron_page(request: Request):
|
||||||
|
return templates.TemplateResponse("cron.html", {"request": request})
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/cron/validate")
|
||||||
|
async def validate_cron_endpoint(request: Request):
|
||||||
|
cron_expr = await get_body(request)
|
||||||
|
try:
|
||||||
|
if not cron_expr:
|
||||||
|
return {"error": "No cron expression provided"}
|
||||||
|
is_valid = validate_cron(cron_expr)
|
||||||
|
next_run = get_next_run(cron_expr) if is_valid else None
|
||||||
|
return {"valid": is_valid, "next_run": next_run}
|
||||||
|
except Exception as e:
|
||||||
|
return {"error": str(e), "valid": False}
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/base64", response_class=HTMLResponse)
|
||||||
|
async def base64_page(request: Request):
|
||||||
|
return templates.TemplateResponse("base64.html", {"request": request})
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/base64/encode")
|
||||||
|
async def encode_base64_endpoint(request: Request):
|
||||||
|
data = await get_body(request)
|
||||||
|
try:
|
||||||
|
if not data:
|
||||||
|
return {"error": "No data provided"}
|
||||||
|
result = encode_base64(data)
|
||||||
|
return {"result": result}
|
||||||
|
except Exception as e:
|
||||||
|
return {"error": str(e)}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/base64/decode")
|
||||||
|
async def decode_base64_endpoint(request: Request):
|
||||||
|
data = await get_body(request)
|
||||||
|
try:
|
||||||
|
if not data:
|
||||||
|
return {"error": "No data provided"}
|
||||||
|
result = decode_base64(data)
|
||||||
|
return {"result": result}
|
||||||
|
except Exception as e:
|
||||||
|
return {"error": str(e)}
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/url", response_class=HTMLResponse)
|
||||||
|
async def url_page(request: Request):
|
||||||
|
return templates.TemplateResponse("url.html", {"request": request})
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/url/encode")
|
||||||
|
async def encode_url_endpoint(request: Request):
|
||||||
|
data = await get_body(request)
|
||||||
|
try:
|
||||||
|
if not data:
|
||||||
|
return {"error": "No data provided"}
|
||||||
|
result = encode_url(data)
|
||||||
|
return {"result": result}
|
||||||
|
except Exception as e:
|
||||||
|
return {"error": str(e)}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/url/decode")
|
||||||
|
async def decode_url_endpoint(request: Request):
|
||||||
|
data = await get_body(request)
|
||||||
|
try:
|
||||||
|
if not data:
|
||||||
|
return {"error": "No data provided"}
|
||||||
|
result = decode_url(data)
|
||||||
|
return {"result": result}
|
||||||
|
except Exception as e:
|
||||||
|
return {"error": str(e)}
|
||||||
Reference in New Issue
Block a user