def _call_geocoder(self, url, timeout=None, raw=False): """ For a generated query URL, get the results. """ try: page = self.urlopen(url, timeout=timeout or self.timeout) except Exception as error: # pylint: disable=W0703 message = str(error) if not py3k else \ (str(error.args[0] if len(error.args) else str(error))) if hasattr(self, '_geocoder_exception_handler'): self._geocoder_exception_handler(error, message) # pylint: disable=E1101 if isinstance(error, HTTPError): code = error.getcode() error_code_map = { 400: GeocoderQueryError, 401: GeocoderAuthenticationFailure, 402: GeocoderQuotaExceeded, 403: GeocoderInsufficientPrivileges, 407: GeocoderAuthenticationFailure, 412: GeocoderQueryError, 413: GeocoderQueryError, 414: GeocoderQueryError, 502: GeocoderServiceError, 503: GeocoderTimedOut, 504: GeocoderTimedOut } try: raise error_code_map[code](message) except KeyError: raise GeocoderServiceError(message) elif isinstance(error, URLError): if "timed out" in message: raise GeocoderTimedOut('Service timed out') elif isinstance(error, SocketTimeout): raise GeocoderTimedOut('Service timed out') elif isinstance(error, SSLError): if "timed out in message": raise GeocoderTimedOut('Service timed out') if not py3k: err = GeocoderServiceError(message) err.__traceback__ = error raise err else: raise GeocoderServiceError(message) if raw: return page return json.loads(decode_page(page))
def _call_geocoder(self, url, timeout=None, raw=False): """ For a generated query URL, get the results. """ try: page = self.urlopen(url, timeout=timeout or self.timeout) except Exception as error: # pylint: disable=W0703 message = ( str(error) if not py3k else ( str(error.args[0]) if len(error.args) else str(error) ) ) if hasattr(self, '_geocoder_exception_handler'): self._geocoder_exception_handler(error, message) # pylint: disable=E1101 if isinstance(error, HTTPError): code = error.getcode() try: raise ERROR_CODE_MAP[code](message) except KeyError: raise GeocoderServiceError(message) elif isinstance(error, URLError): if "timed out" in message: raise GeocoderTimedOut('Service timed out') elif isinstance(error, SocketTimeout): raise GeocoderTimedOut('Service timed out') elif isinstance(error, SSLError): if "timed out in message": raise GeocoderTimedOut('Service timed out') if not py3k: err = GeocoderServiceError(message) err.__traceback__ = error raise err else: raise GeocoderServiceError(message) if raw: return page return json.loads(decode_page(page))