Better handling of retrieving config and server list
This commit is contained in:
parent
411f1609e8
commit
823d7dc2b7
24
speedtest.py
24
speedtest.py
|
@ -297,7 +297,13 @@ class GzipDecodedResponse(GZIP_BASE):
|
|||
raise SpeedtestHTTPError('HTTP response body is gzip encoded, '
|
||||
'but gzip support is not available')
|
||||
IO = BytesIO or StringIO
|
||||
self.io = IO(response.read())
|
||||
self.io = IO()
|
||||
while 1:
|
||||
chunk = response.read(1024)
|
||||
if len(chunk) == 0:
|
||||
break
|
||||
self.io.write(chunk)
|
||||
self.io.seek(0)
|
||||
gzip.GzipFile.__init__(self, mode='rb', fileobj=self.io)
|
||||
|
||||
def close(self):
|
||||
|
@ -721,7 +727,7 @@ class Speedtest(object):
|
|||
stream = get_response_stream(uh)
|
||||
|
||||
while 1:
|
||||
configxml.append(stream.read(10240))
|
||||
configxml.append(stream.read(1024))
|
||||
if len(configxml[-1]) == 0:
|
||||
break
|
||||
stream.close()
|
||||
|
@ -833,7 +839,7 @@ class Speedtest(object):
|
|||
|
||||
serversxml = []
|
||||
while 1:
|
||||
serversxml.append(stream.read(10240))
|
||||
serversxml.append(stream.read(1024))
|
||||
if len(serversxml[-1]) == 0:
|
||||
break
|
||||
|
||||
|
@ -1321,16 +1327,16 @@ def shell():
|
|||
printer('Retrieving speedtest.net configuration...', quiet)
|
||||
try:
|
||||
speedtest = Speedtest()
|
||||
except ConfigRetrievalError:
|
||||
except (ConfigRetrievalError, HTTP_ERRORS):
|
||||
printer('Cannot retrieve speedtest configuration')
|
||||
raise
|
||||
raise SpeedtestCLIError(get_exception())
|
||||
|
||||
if args.list:
|
||||
try:
|
||||
speedtest.get_servers()
|
||||
except ServersRetrievalError:
|
||||
except (ServersRetrievalError, HTTP_ERRORS):
|
||||
print_('Cannot retrieve speedtest server list')
|
||||
raise
|
||||
raise SpeedtestCLIError(get_exception())
|
||||
|
||||
for _, servers in sorted(speedtest.servers.items()):
|
||||
for server in servers:
|
||||
|
@ -1358,9 +1364,9 @@ def shell():
|
|||
speedtest.get_servers(servers)
|
||||
except NoMatchedServers:
|
||||
raise SpeedtestCLIError('No matched servers: %s' % args.server)
|
||||
except ServersRetrievalError:
|
||||
except (ServersRetrievalError, HTTP_ERRORS):
|
||||
print_('Cannot retrieve speedtest server list')
|
||||
raise
|
||||
raise SpeedtestCLIError(get_exception())
|
||||
except InvalidServerIDType:
|
||||
raise SpeedtestCLIError('%s is an invalid server type, must '
|
||||
'be an int' % args.server)
|
||||
|
|
Loading…
Reference in New Issue