3
3
import subprocess
4
4
import sys
5
5
import platform
6
- from urllib .parse import parse_qs , urlparse
6
+
7
+ try :
8
+ from urllib .parse import parse_qsl
9
+ except ImportError :
10
+ from urlparse import parse_qsl
7
11
8
12
from sentry_sdk .consts import OP , SPANDATA
9
13
from sentry_sdk .hub import Hub
@@ -158,7 +162,7 @@ def getresponse(self, *args, **kwargs):
158
162
return rv
159
163
160
164
if isinstance (response_body , dict ) and response_body .get ("errors" ):
161
- method = getattr (self , "_sentrysdk_method" , None )
165
+ method = getattr (self , "_sentrysdk_method" , None ) # type: Optional[str]
162
166
request_body = getattr (self , "_sentry_request_body" , None )
163
167
hub = Hub .current
164
168
with hub .configure_scope () as scope :
@@ -189,19 +193,18 @@ def getresponse(self, *args, **kwargs):
189
193
190
194
191
195
def _make_request_processor (url , method , status , request_body , response_body ):
192
- # type: (Optional[ str], str, int, Any, Any) -> EventProcessor
196
+ # type: (str, Optional[ str] , int, Any, Any) -> EventProcessor
193
197
def stdlib_processor (
194
198
event , # type: Dict[str, Any]
195
199
hint , # type: Dict[str, Tuple[type, BaseException, Any]]
196
200
):
201
+ # type: (...) -> Optional[Event]
197
202
with capture_internal_exceptions ():
198
203
request_info = event .setdefault ("request" , {})
199
204
200
- if url is not None :
201
- parsed_url = urlparse (url )
202
- request_info ["query_string" ] = parsed_url .query
203
- request_info ["url" ] = url
204
-
205
+ parsed_url = parse_url (url , sanitize = False )
206
+ request_info ["query_string" ] = parsed_url .query
207
+ request_info ["url" ] = url
205
208
request_info ["method" ] = method
206
209
try :
207
210
request_info ["data" ] = json .loads (request_body )
@@ -213,11 +216,11 @@ def stdlib_processor(
213
216
response_context = contexts .setdefault ("response" , {})
214
217
response_context ["data" ] = response_body
215
218
216
- if parsed_url .path == "/graphql" :
219
+ if parsed_url .url . endswith ( "/graphql" ) :
217
220
request_info ["api_target" ] = "graphql"
218
221
query = request_info .get ("data" )
219
222
if method == "GET" :
220
- query = parse_qs ( parsed_url .query )
223
+ query = dict ( parse_qsl ( parsed_url .query ) )
221
224
222
225
if query :
223
226
operation_name = _get_graphql_operation_name (query )
0 commit comments