diff --git a/labkey/unsupported/wiki.py b/labkey/unsupported/wiki.py index f65fe33..75e2569 100644 --- a/labkey/unsupported/wiki.py +++ b/labkey/unsupported/wiki.py @@ -49,7 +49,8 @@ def update_wiki(server_context, wiki_name, wiki_body, container_path=None): } try: - read_response = server_context.make_request(read_wiki_url, payload, headers=headers, method='GET') + read_response = server_context.make_request(read_wiki_url, payload, headers=headers, method='GET', + non_json_response=True) except SSLError as e: print("There was a problem while attempting to submit the read for the wiki page " + str(wiki_name) + " via the URL " + str(e.geturl()) + ". The HTTP response code was " + str(e.getcode())) print("The HTTP client error was: " + format(e)) @@ -99,7 +100,8 @@ def update_wiki(server_context, wiki_name, wiki_body, container_path=None): wiki_vars['body'] = wiki_body try: - data = server_context.make_request(update_wiki_url, data=json.dumps(wiki_vars, sort_keys=True), headers=headers) + data = server_context.make_request(update_wiki_url, payload=json.dumps(wiki_vars, sort_keys=True), + headers=headers, non_json_response=True) except SSLError as e: print("There was a problem while attempting to submit the read for the wiki page '" + str(wiki_name) + "' via the URL " + str(e.geturl()) + ". The HTTP response code was " + str(e.getcode())) print("The HTTP client error was: " + format(e)) diff --git a/labkey/utils.py b/labkey/utils.py index 182249a..8702de0 100644 --- a/labkey/utils.py +++ b/labkey/utils.py @@ -71,11 +71,13 @@ def handle_request_exception(e, server_context=None): raise ServerContextError(server_context, e) -def handle_response(response): +def handle_response(response, non_json_response=False): sc = response.status_code if (200 <= sc < 300) or sc == 304: try: + if non_json_response: + return response return response.json() except ValueError: result = dict( @@ -89,6 +91,8 @@ def handle_response(response): raise RequestAuthorizationError(response) elif sc == 404: try: + if non_json_response: + return response response.json() # attempt to decode response raise QueryNotFoundError(response) except ValueError: @@ -135,7 +139,7 @@ def build_url(self, controller, action, container_path=None): return url - def make_request(self, url, payload, headers=None, timeout=300, method='POST'): + def make_request(self, url, payload, headers=None, timeout=300, method='POST', non_json_response=False): if self._api_key is not None: global API_KEY_TOKEN @@ -164,6 +168,6 @@ def make_request(self, url, payload, headers=None, timeout=300, method='POST'): raw_response = self._session.get(url, params=payload, headers=headers, timeout=timeout) else: raw_response = self._session.post(url, data=payload, headers=headers, timeout=timeout) - return handle_response(raw_response) + return handle_response(raw_response, non_json_response) except RequestException as e: handle_request_exception(e, server_context=self)