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, ' |             raise SpeedtestHTTPError('HTTP response body is gzip encoded, ' | ||||||
|                                      'but gzip support is not available') |                                      'but gzip support is not available') | ||||||
|         IO = BytesIO or StringIO |         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) |         gzip.GzipFile.__init__(self, mode='rb', fileobj=self.io) | ||||||
| 
 | 
 | ||||||
|     def close(self): |     def close(self): | ||||||
|  | @ -721,7 +727,7 @@ class Speedtest(object): | ||||||
|         stream = get_response_stream(uh) |         stream = get_response_stream(uh) | ||||||
| 
 | 
 | ||||||
|         while 1: |         while 1: | ||||||
|             configxml.append(stream.read(10240)) |             configxml.append(stream.read(1024)) | ||||||
|             if len(configxml[-1]) == 0: |             if len(configxml[-1]) == 0: | ||||||
|                 break |                 break | ||||||
|         stream.close() |         stream.close() | ||||||
|  | @ -833,7 +839,7 @@ class Speedtest(object): | ||||||
| 
 | 
 | ||||||
|                 serversxml = [] |                 serversxml = [] | ||||||
|                 while 1: |                 while 1: | ||||||
|                     serversxml.append(stream.read(10240)) |                     serversxml.append(stream.read(1024)) | ||||||
|                     if len(serversxml[-1]) == 0: |                     if len(serversxml[-1]) == 0: | ||||||
|                         break |                         break | ||||||
| 
 | 
 | ||||||
|  | @ -1321,16 +1327,16 @@ def shell(): | ||||||
|     printer('Retrieving speedtest.net configuration...', quiet) |     printer('Retrieving speedtest.net configuration...', quiet) | ||||||
|     try: |     try: | ||||||
|         speedtest = Speedtest() |         speedtest = Speedtest() | ||||||
|     except ConfigRetrievalError: |     except (ConfigRetrievalError, HTTP_ERRORS): | ||||||
|         printer('Cannot retrieve speedtest configuration') |         printer('Cannot retrieve speedtest configuration') | ||||||
|         raise |         raise SpeedtestCLIError(get_exception()) | ||||||
| 
 | 
 | ||||||
|     if args.list: |     if args.list: | ||||||
|         try: |         try: | ||||||
|             speedtest.get_servers() |             speedtest.get_servers() | ||||||
|         except ServersRetrievalError: |         except (ServersRetrievalError, HTTP_ERRORS): | ||||||
|             print_('Cannot retrieve speedtest server list') |             print_('Cannot retrieve speedtest server list') | ||||||
|             raise |             raise SpeedtestCLIError(get_exception()) | ||||||
| 
 | 
 | ||||||
|         for _, servers in sorted(speedtest.servers.items()): |         for _, servers in sorted(speedtest.servers.items()): | ||||||
|             for server in servers: |             for server in servers: | ||||||
|  | @ -1358,9 +1364,9 @@ def shell(): | ||||||
|             speedtest.get_servers(servers) |             speedtest.get_servers(servers) | ||||||
|         except NoMatchedServers: |         except NoMatchedServers: | ||||||
|             raise SpeedtestCLIError('No matched servers: %s' % args.server) |             raise SpeedtestCLIError('No matched servers: %s' % args.server) | ||||||
|         except ServersRetrievalError: |         except (ServersRetrievalError, HTTP_ERRORS): | ||||||
|             print_('Cannot retrieve speedtest server list') |             print_('Cannot retrieve speedtest server list') | ||||||
|             raise |             raise SpeedtestCLIError(get_exception()) | ||||||
|         except InvalidServerIDType: |         except InvalidServerIDType: | ||||||
|             raise SpeedtestCLIError('%s is an invalid server type, must ' |             raise SpeedtestCLIError('%s is an invalid server type, must ' | ||||||
|                                     'be an int' % args.server) |                                     'be an int' % args.server) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue