From b7da8a891466755b3883612d230aa9580781ed6d Mon Sep 17 00:00:00 2001 From: Bala FA Date: Thu, 22 Aug 2024 15:15:41 +0530 Subject: [PATCH] minioadmin: fix http trace properly (#1438) Signed-off-by: Bala.FA --- minio/minioadmin.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/minio/minioadmin.py b/minio/minioadmin.py index 8da638a7..1e8d2b6a 100644 --- a/minio/minioadmin.py +++ b/minio/minioadmin.py @@ -24,7 +24,7 @@ import os from datetime import timedelta from enum import Enum, unique -from typing import TextIO, Tuple, cast +from typing import Any, TextIO, Tuple, cast from urllib.parse import urlunsplit import certifi @@ -96,6 +96,14 @@ class _COMMAND(Enum): SERVICE_ACCOUNT_DELETE = "delete-service-account" +def _safe_str(value: Any) -> str: + """Convert to string safely""" + try: + return value.decode() if isinstance(value, bytes) else str(value) + except UnicodeDecodeError: + return value.hex() + + class MinioAdmin: """Client to perform MinIO administration operations.""" @@ -202,9 +210,7 @@ def _url_open( self._trace_stream.write("\n") if body is not None: self._trace_stream.write("\n") - self._trace_stream.write( - body.decode() if isinstance(body, bytes) else str(body), - ) + self._trace_stream.write(_safe_str(body)) self._trace_stream.write("\n") self._trace_stream.write("\n") @@ -230,15 +236,19 @@ def _url_open( headers_to_strings(response.headers), ) self._trace_stream.write("\n") - self._trace_stream.write("\n") - self._trace_stream.write(response.data.decode()) - self._trace_stream.write("\n") + if preload_content: + self._trace_stream.write("\n") + self._trace_stream.write(_safe_str(response.data)) + self._trace_stream.write("\n") self._trace_stream.write("----------END-HTTP----------\n") if response.status in [200, 204, 206]: return response - raise MinioAdminException(str(response.status), response.data.decode()) + raise MinioAdminException( + str(response.status), + _safe_str(response.data), + ) def set_app_info(self, app_name: str, app_version: str): """