From ca86a8fa7842cae7bf7eb73b7b73c290f203a60a Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Feb 12 2019 21:09:19 +0000 Subject: fix xmlrpc encoding error --- diff --git a/koji/__init__.py b/koji/__init__.py index 1a6e952..ba0b2cd 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -2400,6 +2400,14 @@ class ClientSession(object): else: handler = self.baseurl request = dumps(args, name, allow_none=1) + try: + request.encode('latin-1') + except (UnicodeEncodeError, UnicodeDecodeError): + # py2 string throws UnicodeDecodeError + # py3 string throws UnicodeEncodeError + # if string is not converted to UTF, requests will raise an error + # on identical check before sending data + request = request.encode('utf-8') headers = [ # connection class handles Host ('User-Agent', 'koji/1'), diff --git a/koji/xmlrpcplus.py b/koji/xmlrpcplus.py index 06284b4..f818cbc 100644 --- a/koji/xmlrpcplus.py +++ b/koji/xmlrpcplus.py @@ -75,7 +75,7 @@ def dumps(params, methodname=None, methodresponse=None, encoding=None, if isinstance(params, Fault): methodresponse = 1 elif not isinstance(params, tuple): - raise TypeError('params must be a tuple of Fault instance') + raise TypeError('params must be a tuple or Fault instance') elif methodresponse and len(params) != 1: raise ValueError('response tuple must be a singleton')