Skip to content

Commit

Permalink
Support non-json response
Browse files Browse the repository at this point in the history
  • Loading branch information
labkey-nicka committed Feb 28, 2018
1 parent 2338b74 commit 30085eb
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
6 changes: 4 additions & 2 deletions labkey/unsupported/wiki.py
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down Expand Up @@ -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))
Expand Down
10 changes: 7 additions & 3 deletions labkey/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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:
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)

0 comments on commit 30085eb

Please sign in to comment.