Skip to content

Commit 32dbe30

Browse files
authored
Merge pull request #165 from Mikhail-Gl96/bug/aiohttp-loop-masking_fields
bug/aiohttp-loop-masking_fields
2 parents 10f1fea + 392ac7a commit 32dbe30

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

smart_kit/start_points/main_loop_async_http.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1+
import asyncio
12
import json
23
import typing
3-
import os
4+
from functools import cached_property
45

5-
import asyncio
66
import aiohttp
77
import aiohttp.web
88

99
import scenarios.logging.logger_constants as log_const
1010
from core.db_adapter.db_adapter import DBAdapterException, db_adapter_factory
1111
from core.logging.logger_utils import log
1212
from core.message.from_message import SmartAppFromMessage
13+
from core.monitoring.monitoring import monitoring
1314
from core.utils.stats_timer import StatsTimer
1415
from smart_kit.message.smartapp_to_message import SmartAppToMessage
1516
from smart_kit.start_points.main_loop_http import BaseHttpMainLoop
16-
from core.monitoring.monitoring import monitoring
1717

1818

1919
class AIOHttpMainLoop(BaseHttpMainLoop):
@@ -36,6 +36,10 @@ async def close_db(self, app):
3636
app["database"].cancel()
3737
await app["database"]
3838

39+
@cached_property
40+
def masking_fields(self):
41+
return self.settings["template_settings"].get("masking_fields")
42+
3943
async def load_user(self, db_uid, message):
4044
db_data = None
4145
load_error = False
@@ -108,31 +112,35 @@ def stop(self, signum, frame):
108112

109113
async def handle_message(self, message: SmartAppFromMessage) -> typing.Tuple[int, str, SmartAppToMessage]:
110114
if not message.validate():
111-
answer = SmartAppToMessage(self.BAD_REQUEST_COMMAND, message=message, request=None)
115+
answer = SmartAppToMessage(
116+
self.BAD_REQUEST_COMMAND, message=message, request=None, masking_fields=self.masking_fields)
112117
code = 400
113-
log(f"OUTGOING DATA: {answer.value} with code: {code}",
118+
log(f"OUTGOING DATA: {answer.masked_value} with code: {code}",
114119
params={log_const.KEY_NAME: "outgoing_policy_message", "msg_id": message.incremental_id})
115120
return code, "BAD REQUEST", answer
116121

117122
answer, stats, user = await self.process_message(message)
118123
if not answer:
119-
answer = SmartAppToMessage(self.NO_ANSWER_COMMAND, message=message, request=None)
124+
answer = SmartAppToMessage(
125+
self.NO_ANSWER_COMMAND, message=message, request=None, masking_fields=self.masking_fields)
120126
code = 204
121-
log(f"OUTGOING DATA: {answer.value} with code: {code}",
127+
log(f"OUTGOING DATA: {answer.masked_value} with code: {code}",
122128
params={log_const.KEY_NAME: "outgoing_policy_message"}, user=user)
123129
return code, "NO CONTENT", answer
124130

125-
answer_message = SmartAppToMessage(answer, message, request=None, validators=self.to_msg_validators)
131+
answer_message = SmartAppToMessage(
132+
answer, message, request=None, validators=self.to_msg_validators, masking_fields=self.masking_fields)
126133
if answer_message.validate():
127134
code = 200
128-
log_answer = str(answer_message.value).replace("%", "%%")
135+
log_answer = str(answer_message.masked_value).replace("%", "%%")
129136
log(f"OUTGOING DATA: {log_answer} with code: {code}",
130137
params={log_const.KEY_NAME: "outgoing_policy_message"}, user=user)
131138
return code, "OK", answer_message
132139
else:
133140
code = 500
134-
answer = SmartAppToMessage(self.BAD_ANSWER_COMMAND, message=message, request=None)
135-
log(f"OUTGOING DATA: {answer.value} with code: {code}",
141+
answer = SmartAppToMessage(
142+
self.BAD_ANSWER_COMMAND, message=message, request=None, masking_fields=self.masking_fields)
143+
log(f"OUTGOING DATA: {answer.masked_value} with code: {code}",
136144
params={log_const.KEY_NAME: "outgoing_policy_message"}, user=user)
137145
return code, "BAD ANSWER", answer
138146

@@ -170,7 +178,7 @@ async def iterate(self, request: aiohttp.web.Request):
170178
headers = self._get_headers(request.headers)
171179
body = await request.text()
172180
message = SmartAppFromMessage(json.loads(body), headers=headers, headers_required=False,
173-
validators=self.from_msg_validators)
181+
validators=self.from_msg_validators, masking_fields=self.masking_fields)
174182

175183
status, reason, answer = await self.handle_message(message)
176184

0 commit comments

Comments
 (0)