Skip to content

Commit d521e78

Browse files
surajitsurajit
authored andcommitted
add log
1 parent e4e0151 commit d521e78

File tree

4 files changed

+57
-6
lines changed

4 files changed

+57
-6
lines changed

logger/__init__.py

Whitespace-only changes.

logger/log.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import json
2+
import logging
3+
from functools import wraps
4+
from settings import BASE_DIR
5+
6+
logger = logging.getLogger(__name__)
7+
8+
LOG_FILE = BASE_DIR.joinpath('data/app.json')
9+
10+
11+
async def append_log(data):
12+
with open(LOG_FILE, 'a') as file:
13+
json.dump(data, file)
14+
file.write('\n')
15+
16+
17+
def save_log(func):
18+
@wraps(func)
19+
async def wrapper(*args, **kwargs):
20+
try:
21+
request = kwargs.get("request")
22+
url = request.url
23+
method = request.method
24+
message = dict(
25+
url=str(url),
26+
method=method,
27+
)
28+
if hasattr(request, "data"):
29+
data = await request.data()
30+
message["data"] = [data]
31+
if hasattr(request, 'json'):
32+
json_data = await request.json()
33+
message["data"] = [json_data]
34+
await append_log(message)
35+
except Exception as exc:
36+
logger.exception(f'Exception occurred {exc}')
37+
pass
38+
return await func(*args, **kwargs)
39+
40+
return wrapper

routes/v1/email.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from email_api import email
99
from email_api.email import UnauthorizedException
1010
from email_api.email import BadRequestException
11+
from logger.log import save_log
1112
from models.message import MessageType
1213
from models.message import Carrier
1314
from sqlalchemy.orm import Session
@@ -22,6 +23,7 @@
2223

2324

2425
@router.post("/email/send/")
26+
@save_log
2527
async def send_email(request: Request, db: Session = Depends(get_db)):
2628
try:
2729
data = await request.json()
@@ -36,3 +38,4 @@ async def send_email(request: Request, db: Session = Depends(get_db)):
3638
except (UnauthorizedException, BadRequestException, MessageExistException) as exc:
3739
raise HTTPException(status_code=200, detail=str(exc))
3840
return response
41+

tests/routes/test_email.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ def __init__(self, headers, status_code):
1919

2020

2121
@mock.patch("routes.v1.email.email.send_email")
22-
def test_email_send(mock_send_email, client, db):
22+
@mock.patch("logger.log.append_log")
23+
def test_email_send(mock_save_log, mock_send_email, client, db):
24+
mock_save_log.return_value = "Ok"
2325
sendgrid_response_mock = SendGridResponseMock(
2426
headers={"x-message-id": "xvis10203sn"}, status_code=202
2527
)
@@ -34,25 +36,31 @@ def test_email_send(mock_send_email, client, db):
3436

3537

3638
@mock.patch("routes.v1.email.email.send_email")
37-
def test_email_send_with_sendgrid_unauthorizedexception(mock_send_email, client):
39+
@mock.patch("logger.log.append_log")
40+
def test_email_send_with_sendgrid_unauthorizedexception(mock_save_log, mock_send_email, client):
41+
mock_save_log.return_value = "Ok"
3842
mock_send_email.side_effect = UnauthorizedException("Not allowed to access the API")
3943
response = client.post("/api/v1/email/send/", json=read_json("email_data.json"))
4044
assert response.status_code == 200
4145
assert response.json() == {"detail": "Not allowed to access the API"}
4246

4347

4448
@mock.patch("routes.v1.email.email.send_email")
45-
def test_email_send_with_sendgrid_bad_request_exception(mock_send_email, client):
49+
@mock.patch("logger.log.append_log")
50+
def test_email_send_with_sendgrid_bad_request_exception(mock_save_log, mock_send_email, client):
51+
mock_save_log.return_value = "Ok"
4652
mock_send_email.side_effect = BadRequestException("Bad request")
4753
response = client.post("/api/v1/email/send/", json=read_json("email_data.json"))
4854
assert response.status_code == 200
4955
assert response.json() == {"detail": "Bad request"}
5056

5157

5258
@mock.patch("routes.v1.email.email.send_email")
59+
@mock.patch("logger.log.append_log")
5360
def test_email_send_with_db_duplicate_message_id(
54-
mock_send_email, client, message
61+
mock_save_log, mock_send_email, client, message
5562
):
63+
mock_save_log.return_value = "Ok"
5664
sendgrid_response_mock = SendGridResponseMock(
5765
headers={"x-message-id": "123657ab"}, status_code=202
5866
)
@@ -61,6 +69,6 @@ def test_email_send_with_db_duplicate_message_id(
6169
assert response.status_code == 200
6270
assert response.json() == {
6371
"detail": "duplicate key value violates unique constraint "
64-
'"ix_message_message_id"\nDETAIL: Key (message_id)=('
65-
"123657ab) already exists.\n"
72+
'"ix_message_message_id"\nDETAIL: Key (message_id)=('
73+
"123657ab) already exists.\n"
6674
}

0 commit comments

Comments
 (0)