From 83e790be74e892513d8cce991eb5a740af6c8899 Mon Sep 17 00:00:00 2001 From: Ivan Golikov Date: Wed, 25 Dec 2024 10:07:13 +0000 Subject: [PATCH] Erase secrets after view (#1) Reviewed-on: https://git.ivnglkv.me/root/psssecret/pulls/1 Co-authored-by: Ivan Golikov Co-committed-by: Ivan Golikov --- .gitignore | 1 + src/rectes/main.py | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f6c4a2c..b2c4cd9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ dist/ rectes.egg-info/ build/ conf/rectes.toml +__pycache__/ diff --git a/src/rectes/main.py b/src/rectes/main.py index 6f8d0fb..26d66b8 100644 --- a/src/rectes/main.py +++ b/src/rectes/main.py @@ -1,4 +1,5 @@ from fastapi import FastAPI +from fastapi.exceptions import HTTPException from rectes.models import Secret, SecretSaveResult from rectes.redis_db import redis @@ -18,8 +19,18 @@ async def set_secret(data: Secret): } -@app.get("/secret/{secret_key}", response_model=Secret) +@app.get( + "/secret/{secret_key}", + response_model=Secret, + responses={404: {"description": "The item was not found"}}, +) async def get_secret(secret_key): + data = await redis.get(secret_key) + + if data is None: + raise HTTPException(404) + + await redis.delete(secret_key) return { - "data": await redis.get(secret_key), + "data": data, }