def _checkBandwidth( self, request ): if not self._service.BandwidthOK(): raise HydrusExceptions.BandwidthException( 'This service has run out of bandwidth. Please try again later.' ) if not HG.server_controller.ServerBandwidthOK(): raise HydrusExceptions.BandwidthException( 'This server has run out of bandwidth. Please try again later.' )
def _checkService(self, request): HydrusServerResources.HydrusResource._checkService(self, request) if not self._service.BandwidthOK(): raise HydrusExceptions.BandwidthException( 'This service has run out of bandwidth. Please try again later.' )
def _DealWithResponse(self, method, response, parsed_response, size_of_response): response_headers = { k: v for (k, v) in response.getheaders() if k != 'set-cookie' } cookies = self._ParseCookies(response.getheader('set-cookie')) self._last_request_time = HydrusData.GetNow() if response.status == 200: return (parsed_response, None, size_of_response, response_headers, cookies) elif response.status in (301, 302, 303, 307): location = response.getheader('Location') if location is None: raise Exception('Received an invalid redirection response.') else: url = location if ', ' in url: url = url.split(', ')[0] elif ' ' in url: # some booru is giving daft redirect responses HydrusData.Print(url) url = urllib.quote(HydrusData.ToByteString(url), safe='/?=&') HydrusData.Print(url) if not url.startswith(self._scheme): # assume it is like 'index.php' or '/index.php', rather than 'http://blah.com/index.php' if url.startswith('/'): slash_sep = '' else: slash_sep = '/' url = self._scheme + '://' + self._host + slash_sep + url if response.status in (301, 307): # 301: moved permanently, repeat request # 307: moved temporarily, repeat request redirect_info = (method, url) elif response.status in (302, 303): # 302: moved temporarily, repeat request (except everyone treats it like 303 for no good f*****g reason) # 303: thanks, now go here with GET redirect_info = (HC.GET, url) return (parsed_response, redirect_info, size_of_response, response_headers, cookies) elif response.status == 304: raise HydrusExceptions.NotModifiedException() else: if response.status == 401: raise HydrusExceptions.PermissionException(parsed_response) elif response.status == 403: raise HydrusExceptions.ForbiddenException(parsed_response) elif response.status == 404: raise HydrusExceptions.NotFoundException(parsed_response) elif response.status == 419: raise HydrusExceptions.SessionException(parsed_response) elif response.status == 426: raise HydrusExceptions.NetworkVersionException(parsed_response) elif response.status == 509: raise HydrusExceptions.BandwidthException(parsed_response) elif response.status in (500, 501, 502, 503): server_header = response.getheader('Server') if server_header is not None and 'hydrus' in server_header: hydrus_service = True else: hydrus_service = False if response.status == 503 and hydrus_service: raise HydrusExceptions.ServerBusyException( 'Server is busy, please try again later.') else: raise Exception(parsed_response) else: raise Exception(parsed_response)