@@ -23,6 +23,8 @@ def inner(obj):
2323 rv [k ], meta [k ] = inner (v )
2424 if meta [k ] is None :
2525 del meta [k ]
26+ if rv [k ] is None :
27+ del rv [k ]
2628 return rv , (meta or None )
2729 if isinstance (obj , Sequence ) and not isinstance (obj , (text_type , bytes )):
2830 rv = []
@@ -43,7 +45,7 @@ def inner(obj):
4345 return obj
4446
4547
46- def strip_event (event ):
48+ def strip_event (event , client = None ):
4749 old_frames = event .get ("stacktrace" , {}).get ("frames" , None )
4850 if old_frames :
4951 event ["stacktrace" ]["frames" ] = [strip_frame (frame ) for frame in old_frames ]
@@ -52,6 +54,32 @@ def strip_event(event):
5254 if old_request_data :
5355 event ["request" ]["data" ] = strip_databag (old_request_data )
5456
57+ if not client or not client .options ["send_default_pii" ]:
58+ event = strip_default_pii (event )
59+
60+ return event
61+
62+
63+ def strip_default_pii (event ):
64+ gone = lambda : AnnotatedValue (None , {"rem" : [["!strip_default_pii" , "x" ]]})
65+
66+ if event .get ("user" ):
67+ event ["user" ] = gone ()
68+
69+ request = event .get ("request" )
70+ if request :
71+ if request .get ("cookies" ):
72+ request ["cookies" ] = gone ()
73+ if request .get ("headers" ):
74+ headers = request ["headers" ]
75+ for key in list (headers ):
76+ if key .lower ().replace ("_" , "-" ) in (
77+ "set-cookie" ,
78+ "cookie" ,
79+ "authentication" ,
80+ ):
81+ headers [key ] = gone ()
82+
5583 return event
5684
5785
@@ -63,7 +91,7 @@ def strip_frame(frame):
6391def strip_databag (obj , remaining_depth = 20 ):
6492 assert not isinstance (obj , bytes ), "bytes should have been normalized before"
6593 if remaining_depth <= 0 :
66- return AnnotatedValue (None , {"" : { " rem" : [["!dep" , "x" ]]} })
94+ return AnnotatedValue (None , {"rem" : [["!dep" , "x" ]]})
6795 if isinstance (obj , text_type ):
6896 return strip_string (obj )
6997 if isinstance (obj , Mapping ):
0 commit comments