35 lines
818 B
Python
35 lines
818 B
Python
from fastapi import FastAPI
|
|
from fastapi.exceptions import HTTPException
|
|
|
|
from pssecret.models import Secret, SecretSaveResult
|
|
from pssecret.redis_db import redis
|
|
from pssecret.utils import get_new_key
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
@app.post("/secret", response_model=SecretSaveResult)
|
|
async def set_secret(data: Secret):
|
|
new_key = await get_new_key()
|
|
await redis.setex(new_key, 60 * 60 * 24, data.data)
|
|
|
|
return {
|
|
"status": "saved",
|
|
"retrieval_url": f"/secret/{new_key}",
|
|
}
|
|
|
|
|
|
@app.get(
|
|
"/secret/{secret_key}",
|
|
response_model=Secret,
|
|
responses={404: {"description": "The item was not found"}},
|
|
)
|
|
async def get_secret(secret_key: str):
|
|
data: str | None = await redis.getdel(secret_key)
|
|
|
|
if data is None:
|
|
raise HTTPException(404)
|
|
|
|
return {
|
|
"data": data,
|
|
}
|