1
+ import asyncio
1
2
import json
2
3
import typing
3
- import os
4
+ from functools import cached_property
4
5
5
- import asyncio
6
6
import aiohttp
7
7
import aiohttp .web
8
8
9
9
import scenarios .logging .logger_constants as log_const
10
10
from core .db_adapter .db_adapter import DBAdapterException , db_adapter_factory
11
11
from core .logging .logger_utils import log
12
12
from core .message .from_message import SmartAppFromMessage
13
+ from core .monitoring .monitoring import monitoring
13
14
from core .utils .stats_timer import StatsTimer
14
15
from smart_kit .message .smartapp_to_message import SmartAppToMessage
15
16
from smart_kit .start_points .main_loop_http import BaseHttpMainLoop
16
- from core .monitoring .monitoring import monitoring
17
17
18
18
19
19
class AIOHttpMainLoop (BaseHttpMainLoop ):
@@ -36,6 +36,10 @@ async def close_db(self, app):
36
36
app ["database" ].cancel ()
37
37
await app ["database" ]
38
38
39
+ @cached_property
40
+ def masking_fields (self ):
41
+ return self .settings ["template_settings" ].get ("masking_fields" )
42
+
39
43
async def load_user (self , db_uid , message ):
40
44
db_data = None
41
45
load_error = False
@@ -108,31 +112,35 @@ def stop(self, signum, frame):
108
112
109
113
async def handle_message (self , message : SmartAppFromMessage ) -> typing .Tuple [int , str , SmartAppToMessage ]:
110
114
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 )
112
117
code = 400
113
- log (f"OUTGOING DATA: { answer .value } with code: { code } " ,
118
+ log (f"OUTGOING DATA: { answer .masked_value } with code: { code } " ,
114
119
params = {log_const .KEY_NAME : "outgoing_policy_message" , "msg_id" : message .incremental_id })
115
120
return code , "BAD REQUEST" , answer
116
121
117
122
answer , stats , user = await self .process_message (message )
118
123
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 )
120
126
code = 204
121
- log (f"OUTGOING DATA: { answer .value } with code: { code } " ,
127
+ log (f"OUTGOING DATA: { answer .masked_value } with code: { code } " ,
122
128
params = {log_const .KEY_NAME : "outgoing_policy_message" }, user = user )
123
129
return code , "NO CONTENT" , answer
124
130
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 )
126
133
if answer_message .validate ():
127
134
code = 200
128
- log_answer = str (answer_message .value ).replace ("%" , "%%" )
135
+ log_answer = str (answer_message .masked_value ).replace ("%" , "%%" )
129
136
log (f"OUTGOING DATA: { log_answer } with code: { code } " ,
130
137
params = {log_const .KEY_NAME : "outgoing_policy_message" }, user = user )
131
138
return code , "OK" , answer_message
132
139
else :
133
140
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 } " ,
136
144
params = {log_const .KEY_NAME : "outgoing_policy_message" }, user = user )
137
145
return code , "BAD ANSWER" , answer
138
146
@@ -170,7 +178,7 @@ async def iterate(self, request: aiohttp.web.Request):
170
178
headers = self ._get_headers (request .headers )
171
179
body = await request .text ()
172
180
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 )
174
182
175
183
status , reason , answer = await self .handle_message (message )
176
184
0 commit comments