Skip to content

Commit 1cecff4

Browse files
authored
Merge pull request #42 from terrateamio/revert-41-fix/preserve-query-string-encoding
Revert "Fix/preserve query string encoding"
2 parents be0afe9 + f86ec8c commit 1cecff4

File tree

3 files changed

+24
-63
lines changed

3 files changed

+24
-63
lines changed

terratunnel/client/app.py

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -373,22 +373,12 @@ def _log_request(self, request_data: dict, response_data: dict, duration_ms: Opt
373373
method = request_data.get("method", "GET")
374374
path = request_data.get("path", "/")
375375
status_code = response_data.get("status_code", 0)
376-
377-
# Add query string if present - use raw_query_string if available for proper encoding display
378-
raw_query_string = request_data.get("raw_query_string", "")
379-
if raw_query_string:
380-
path += "?" + raw_query_string
381-
else:
382-
# Fallback to parsed params (backward compatibility)
383-
query_params = request_data.get("query_params", {})
384-
if query_params:
385-
# Handle both dict (old format) and list of tuples (new format for multi-value params)
386-
if isinstance(query_params, dict):
387-
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params.items()])
388-
else:
389-
# List of tuples format
390-
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params])
391-
path += query_str
376+
377+
# Add query string if present
378+
query_params = request_data.get("query_params", {})
379+
if query_params:
380+
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params.items()])
381+
path += query_str
392382

393383
if self.request_logger:
394384
# Log full details to file and get request ID
@@ -413,23 +403,15 @@ async def handle_request(self, request_data: dict) -> dict:
413403
path = request_data.get("path", "/")
414404
headers = request_data.get("headers", {})
415405
query_params = request_data.get("query_params", {})
416-
raw_query_string = request_data.get("raw_query_string", "")
417406
body = request_data.get("body", "")
418-
419-
407+
408+
420409
# Handle binary request body if present
421410
if request_data.get("is_binary") and body:
422411
body = base64.b64decode(body)
423-
424-
# Build URL with raw query string if available, otherwise use params
425-
if raw_query_string:
426-
url = f"{self.local_url}{path}?{raw_query_string}"
427-
# Don't pass params to avoid double encoding
428-
query_params = None
429-
else:
430-
url = f"{self.local_url}{path}"
431-
# Use parsed params (backward compatibility)
432-
412+
413+
url = f"{self.local_url}{path}"
414+
433415
async with httpx.AsyncClient() as client:
434416
response = await client.request(
435417
method=method,

terratunnel/client/request_logger.py

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,12 @@ def log_request(self, request_data: Dict[str, Any], response_data: Dict[str, Any
5252
# Request details
5353
method = request_data.get("method", "GET")
5454
path = request_data.get("path", "/")
55-
56-
# Add query string if present - use raw_query_string if available for proper encoding display
57-
raw_query_string = request_data.get("raw_query_string", "")
58-
if raw_query_string:
59-
path += "?" + raw_query_string
60-
else:
61-
# Fallback to parsed params (backward compatibility)
62-
query_params = request_data.get("query_params", {})
63-
if query_params:
64-
# Handle both dict (old format) and list of tuples (new format for multi-value params)
65-
if isinstance(query_params, dict):
66-
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params.items()])
67-
else:
68-
# List of tuples format
69-
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params])
70-
path += query_str
55+
query_params = request_data.get("query_params", {})
56+
57+
# Add query string if present
58+
if query_params:
59+
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params.items()])
60+
path += query_str
7161

7262
log_lines.append(f"REQUEST: {method} {path}")
7363

@@ -138,22 +128,12 @@ def format_access_log(self, request_data: Dict[str, Any], response_data: Dict[st
138128
method = request_data.get("method", "GET")
139129
path = request_data.get("path", "/")
140130
status_code = response_data.get("status_code", 0)
141-
142-
# Add query string if present - use raw_query_string if available for proper encoding display
143-
raw_query_string = request_data.get("raw_query_string", "")
144-
if raw_query_string:
145-
path += "?" + raw_query_string
146-
else:
147-
# Fallback to parsed params (backward compatibility)
148-
query_params = request_data.get("query_params", {})
149-
if query_params:
150-
# Handle both dict (old format) and list of tuples (new format for multi-value params)
151-
if isinstance(query_params, dict):
152-
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params.items()])
153-
else:
154-
# List of tuples format
155-
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params])
156-
path += query_str
131+
132+
# Add query string if present
133+
query_params = request_data.get("query_params", {})
134+
if query_params:
135+
query_str = "?" + "&".join([f"{k}={v}" for k, v in query_params.items()])
136+
path += query_str
157137

158138
# Format timestamp
159139
timestamp = datetime.now().strftime("%H:%M:%S")

terratunnel/server/app.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2472,8 +2472,7 @@ async def proxy_request_streaming(request: Request, path: str):
24722472
"method": request.method,
24732473
"path": f"/{path}" if path else "/",
24742474
"headers": dict(request.headers),
2475-
"query_params": list(request.query_params.multi_items()), # For list query params support
2476-
"raw_query_string": str(request.url.query) if request.url.query else "", # For encoding preservation
2475+
"query_params": dict(request.query_params),
24772476
}
24782477

24792478
if body:

0 commit comments

Comments
 (0)