mirror of
https://github.com/rembo10/headphones.git
synced 2026-03-22 04:39:26 +00:00
Parse response content for HTTP errors when verbose is turned on
This commit is contained in:
@@ -45,10 +45,10 @@ def request_response(url, method="get", auto_raise=True, whitelist_status_code=N
|
||||
|
||||
return response
|
||||
except requests.ConnectionError:
|
||||
logger.error("Unable to connect to remote host.")
|
||||
logger.error("Unable to connect to remote host. Check if the remote host is up and running.")
|
||||
except requests.Timeout:
|
||||
logger.error("Request timed out.")
|
||||
except requests.HTTPError, e:
|
||||
logger.error("Request timed out. The remote host did not respeond timely.")
|
||||
except requests.HTTPError as e:
|
||||
if e.response is not None:
|
||||
if e.response.status_code >= 500:
|
||||
cause = "remote server error"
|
||||
@@ -59,9 +59,27 @@ def request_response(url, method="get", auto_raise=True, whitelist_status_code=N
|
||||
cause = "unknown"
|
||||
|
||||
logger.error("Request raise HTTP error with status code %d (%s).", e.response.status_code, cause)
|
||||
|
||||
# Some servers return extra information in the result. Try to parse
|
||||
# it for debugging purpose. Messages are limited to 100 characters,
|
||||
# since it may return the whole page in case of normal web page URLs
|
||||
if headphones.VERBOSE:
|
||||
if e.response.headers.get('content-type') == 'text/html':
|
||||
soup = BeautifulSoup(e.response.content, "html5lib")
|
||||
|
||||
message = soup.find("body")
|
||||
message = message.text if message else soup.text
|
||||
else:
|
||||
message = e.response.content
|
||||
|
||||
# Truncate message if it is too long.
|
||||
if len(message) > 100:
|
||||
message = message[:100] + "..."
|
||||
|
||||
logger.debug("Server responded with message: %s", message)
|
||||
else:
|
||||
logger.error("Request raised HTTP error.")
|
||||
except requests.RequestException, e:
|
||||
except requests.RequestException as e:
|
||||
logger.error("Request raised exception: %s", e)
|
||||
|
||||
def request_soup(url, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user