Improved exception handling (#3746)

This commit is contained in:
Erik Eriksson 2016-10-08 02:16:35 +02:00 committed by Paulus Schoutsen
parent f37038921f
commit 1c24018fbb

View file

@ -79,18 +79,11 @@ class LogitechMediaServer(object):
def _get_http_port(self):
"""Get http port from media server, it is used to get cover art."""
http_port = None
try:
http_port = self.query('pref', 'httpport', '?')
if not http_port:
_LOGGER.error("Unable to read data from server %s:%s",
_LOGGER.error("Failed to connect to server %s:%s",
self.host, self.port)
return
return http_port
except ConnectionError as ex:
_LOGGER.error("Failed to connect to server %s:%s - %s",
self.host, self.port, ex)
return
def create_players(self):
"""Create a list of SqueezeBoxDevices connected to the LMS."""
@ -104,6 +97,7 @@ class LogitechMediaServer(object):
def query(self, *parameters):
"""Send request and await response from server."""
try:
telnet = telnetlib.Telnet(self.host, self.port)
if self._username and self._password:
telnet.write('login {username} {password}\n'.format(
@ -118,6 +112,12 @@ class LogitechMediaServer(object):
.strip()
telnet.write(b'exit\n')
return urllib.parse.unquote(response)
except (OSError, ConnectionError) as error:
_LOGGER.error("Could not communicate with %s:%d: %s",
self.host,
self.port,
error)
return None
def get_player_status(self, player):
"""Get ithe status of a player."""
@ -128,6 +128,7 @@ class LogitechMediaServer(object):
# K (artwork_url): URL to remote artwork
tags = 'adK'
new_status = {}
try:
telnet = telnetlib.Telnet(self.host, self.port)
telnet.write('{player} status - 1 tags:{tags}\n'.format(
player=player,
@ -140,6 +141,11 @@ class LogitechMediaServer(object):
for item in response:
parts = urllib.parse.unquote(item).partition(':')
new_status[parts[0]] = parts[2]
except (OSError, ConnectionError) as error:
_LOGGER.error("Could not communicate with %s:%d: %s",
self.host,
self.port,
error)
return new_status