From daace4443491e12deeb72a915659d7e3b52ae96d Mon Sep 17 00:00:00 2001 From: Luca Giovenzana Date: Wed, 12 Feb 2020 23:22:40 +0100 Subject: [PATCH] Moved is_string_type and utf8_urlencode to utils --- src/RequestsLibrary/RequestsKeywords.py | 30 +++++-------------------- src/RequestsLibrary/utils.py | 24 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/RequestsLibrary/RequestsKeywords.py b/src/RequestsLibrary/RequestsKeywords.py index d283aef1..1af885e9 100644 --- a/src/RequestsLibrary/RequestsKeywords.py +++ b/src/RequestsLibrary/RequestsKeywords.py @@ -16,7 +16,7 @@ from robot.utils.asserts import assert_equal from RequestsLibrary import utils -from RequestsLibrary.compat import httplib, urlencode, PY3 +from RequestsLibrary.compat import httplib, PY3 from RequestsLibrary.exceptions import InvalidResponse @@ -934,7 +934,7 @@ def _common_request( self._capture_output() resp = method_function( self._get_url(session, uri), - params=self._utf8_urlencode(kwargs.pop('params', None)), + params=utils.utf8_urlencode(kwargs.pop('params', None)), timeout=self._get_timeout(kwargs.pop('timeout', None)), cookies=self.cookies, verify=self.verify, @@ -1007,20 +1007,6 @@ def _print_debug(self): logger.debug(debug_info) - def _utf8_urlencode(self, data): - if self._is_string_type(data): - return data.encode('utf-8') - - if not isinstance(data, dict): - return data - - utf8_data = {} - for k, v in data.items(): - if self._is_string_type(v): - v = v.encode('utf-8') - utf8_data[k] = v - return urlencode(utf8_data) - def _format_data_according_to_header(self, session, data, headers): # Merged headers are already case insensitive headers = utils.merge_headers(session, headers) @@ -1031,9 +1017,9 @@ def _format_data_according_to_header(self, session, data, headers): if str(data).strip(): data = json.dumps(data) elif headers['Content-Type'].find("application/x-www-form-urlencoded") != -1: - data = self._utf8_urlencode(data) + data = utils.utf8_urlencode(data) else: - data = self._utf8_urlencode(data) + data = utils.utf8_urlencode(data) return data @@ -1095,10 +1081,4 @@ def _log_response(method, response): response.text) - @staticmethod - def _is_string_type(data): - if PY3 and isinstance(data, str): - return True - elif not PY3 and isinstance(data, unicode): - return True - return False + diff --git a/src/RequestsLibrary/utils.py b/src/RequestsLibrary/utils.py index fae6c00a..5904873d 100644 --- a/src/RequestsLibrary/utils.py +++ b/src/RequestsLibrary/utils.py @@ -4,6 +4,7 @@ from requests.structures import CaseInsensitiveDict from RequestsLibrary.exceptions import UnknownStatusError +from RequestsLibrary.compat import urlencode, PY3 def parse_named_status(status_code): @@ -57,3 +58,26 @@ def json_pretty_print(content): separators=( ',', ': ')) + + +def is_string_type(data): + if PY3 and isinstance(data, str): + return True + elif not PY3 and isinstance(data, unicode): + return True + return False + + +def utf8_urlencode(data): + if is_string_type(data): + return data.encode('utf-8') + + if not isinstance(data, dict): + return data + + utf8_data = {} + for k, v in data.items(): + if is_string_type(v): + v = v.encode('utf-8') + utf8_data[k] = v + return urlencode(utf8_data)