@@ -42,34 +42,34 @@ def default(self, obj):
4242 return ""
4343
4444
45- def masked_dict (obj , sensitive_keys : list = DEFAULT_SENSITIVE_KEYS , message : str = DEFAULT_REDACTION_MESSAGE ) -> dict :
45+ def masked_dict (
46+ source_dict , sensitive_keys : list = DEFAULT_SENSITIVE_KEYS , message : str = DEFAULT_REDACTION_MESSAGE
47+ ) -> dict :
4648 """
4749 Mask sensitive key / value in log entries.
4850
4951 Masks the value of specified key.
5052 obj: a dict or a string representation of a dict, or None
5153 """
52- if type (obj ) == str :
53- obj = json .loads (obj )
54+ if type (source_dict ) == str :
55+ source_dict = json .loads (source_dict )
5456
55- if type (obj ) != dict :
56- raise TypeError ("obj must be a dict or a json serializable string" )
57+ if type (source_dict ) != dict :
58+ raise TypeError ("source_dict must be a dict or a json serializable string" )
5759
58- to_mask = {}
59- for key in obj :
60- value = obj [key ]
60+ recursed_dict = {}
61+ for key in source_dict :
62+ value = source_dict [key ]
6163 if type (value ) == dict :
62- value = masked_dict (obj = value , sensitive_keys = sensitive_keys , message = message )
63- to_mask [key ] = value
64+ value = masked_dict (source_dict = value , sensitive_keys = sensitive_keys , message = message )
65+ recursed_dict [key ] = value
6466
65- def redact (key : str , obj : dict ) -> dict :
66- if key in obj :
67- obj [key ] = message
68- return obj
69-
70- for key in sensitive_keys :
71- to_mask = redact (key = key , obj = to_mask )
72- return to_mask
67+ for lower_case_sensitive_key in [x .lower () for x in sensitive_keys ]:
68+ if lower_case_sensitive_key in [x .lower () for x in recursed_dict .keys ()]:
69+ for original_key in recursed_dict :
70+ if original_key .lower () == lower_case_sensitive_key :
71+ recursed_dict [original_key ] = message
72+ return recursed_dict
7373
7474
7575def masked_dict2str (
@@ -79,14 +79,7 @@ def masked_dict2str(
7979 message : str = DEFAULT_REDACTION_MESSAGE ,
8080) -> str :
8181 """Return a JSON encoded string representation of a masked dict."""
82- to_serialize = {}
83- for key in obj :
84- value = obj [key ]
85- if type (value ) == dict :
86- value = masked_dict (value , sensitive_keys , message = message )
87- to_serialize [key ] = value
88-
89- return json .dumps (masked_dict (to_serialize , sensitive_keys , message = message ), cls = _JSONEncoder , indent = indent )
82+ return json .dumps (masked_dict (obj , sensitive_keys , message = message ), cls = _JSONEncoder , indent = indent )
9083
9184
9285def serialized_masked_dict (
0 commit comments