hsadmin.api/main.py
Timotheus Pokorra 9dc0f99cf1 initial commit
2025-02-21 22:44:24 +01:00

47 lines
1.6 KiB
Python

from typing import Annotated
from fastapi import Depends, FastAPI
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
import hsadmin
import config
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/")
def root():
return {"Hello": "World"};
@app.post("/token")
async def login(form_data: Annotated[OAuth2PasswordRequestForm, Depends()]):
if not config.username == form_data.username:
raise HTTPException(status_code=400, detail="Incorrect username or password")
if not config.password == form_data.password:
raise HTTPException(status_code=400, detail="Incorrect username or password")
return {"access_token": form_data.username, "token_type": "bearer"}
@app.put("/list/{listname}")
def create_list(token: Annotated[str, Depends(oauth2_scheme)], listname: str):
api = hsadmin.login()
if hsadmin.email_exists(api, config.domain, listname):
return {"Success": "false", "Message": "list already exists"}
result = hsadmin.add_email(api, config.listsuser, config.domain, listname)
if result == True:
return {"Success": "true"}
return {"Success": "false", "Message": result}
@app.delete("/list/{listname}")
def delete_list(token: Annotated[str, Depends(oauth2_scheme)], listname: str):
api = hsadmin.login()
if not hsadmin.email_exists(api, config.domain, listname):
return {"Success": "false", "Message": "list does not exist"}
result = hsadmin.remove_email(api, config.listsuser, config.domain, listname)
if result == True:
return {"Success": "true"}
return {"Success": "false", "Message": result}