def test_from_http_status_with_errors(): message = 'message' errors = ['1', '2'] exception = exceptions.from_http_status( http_client.NOT_FOUND, message, errors=errors) assert isinstance(exception, exceptions.NotFound) assert exception.code == http_client.NOT_FOUND assert exception.message == message assert exception.errors == errors
def test_from_http_status_with_errors(): message = "message" errors = ["1", "2"] exception = exceptions.from_http_status( http_client.NOT_FOUND, message, errors=errors ) assert isinstance(exception, exceptions.NotFound) assert exception.code == http_client.NOT_FOUND assert exception.message == message assert exception.errors == errors
def _request(http, project, method, data, base_url, client_info): """Make a request over the Http transport to the Cloud Datastore API. :type http: :class:`requests.Session` :param http: HTTP object to make requests. :type project: str :param project: The project to make the request for. :type method: str :param method: The API call method name (ie, ``runQuery``, ``lookup``, etc) :type data: str :param data: The data to send with the API call. Typically this is a serialized Protobuf string. :type base_url: str :param base_url: The base URL where the API lives. :type client_info: :class:`google.api_core.client_info.ClientInfo` :param client_info: used to generate user agent. :rtype: str :returns: The string response content from the API call. :raises: :class:`google.cloud.exceptions.GoogleCloudError` if the response code is not 200 OK. """ user_agent = client_info.to_user_agent() headers = { "Content-Type": "application/x-protobuf", "User-Agent": user_agent, connection_module.CLIENT_INFO_HEADER: user_agent, } api_url = build_api_url(project, method, base_url) response = http.request(url=api_url, method="POST", headers=headers, data=data) if response.status_code != 200: error_status = status_pb2.Status.FromString(response.content) raise exceptions.from_http_status(response.status_code, error_status.message, errors=[error_status]) return response.content
def _request(http, project, method, data, base_url, client_info): """Make a request over the Http transport to the Cloud Datastore API. :type http: :class:`requests.Session` :param http: HTTP object to make requests. :type project: str :param project: The project to make the request for. :type method: str :param method: The API call method name (ie, ``runQuery``, ``lookup``, etc) :type data: str :param data: The data to send with the API call. Typically this is a serialized Protobuf string. :type base_url: str :param base_url: The base URL where the API lives. :type client_info: :class:`google.api_core.client_info.ClientInfo` :param client_info: used to generate user agent. :rtype: str :returns: The string response content from the API call. :raises: :class:`google.cloud.exceptions.GoogleCloudError` if the response code is not 200 OK. """ user_agent = client_info.to_user_agent() headers = { "Content-Type": "application/x-protobuf", "User-Agent": user_agent, connection_module.CLIENT_INFO_HEADER: user_agent, } api_url = build_api_url(project, method, base_url) response = http.request(url=api_url, method="POST", headers=headers, data=data) if response.status_code != 200: error_status = status_pb2.Status.FromString(response.content) raise exceptions.from_http_status( response.status_code, error_status.message, errors=[error_status] ) return response.content
def _request(http, project, method, data, base_url): """Make a request over the Http transport to the Cloud Datastore API. :type http: :class:`requests.Session` :param http: HTTP object to make requests. :type project: str :param project: The project to make the request for. :type method: str :param method: The API call method name (ie, ``runQuery``, ``lookup``, etc) :type data: str :param data: The data to send with the API call. Typically this is a serialized Protobuf string. :type base_url: str :param base_url: The base URL where the API lives. :rtype: str :returns: The string response content from the API call. :raises: :class:`google.cloud.exceptions.GoogleCloudError` if the response code is not 200 OK. """ headers = { 'Content-Type': 'application/x-protobuf', 'User-Agent': connection_module.DEFAULT_USER_AGENT, connection_module.CLIENT_INFO_HEADER: _CLIENT_INFO, } api_url = build_api_url(project, method, base_url) response = http.request(url=api_url, method='POST', headers=headers, data=data) if response.status_code != 200: error_status = status_pb2.Status.FromString(response.content) raise exceptions.from_http_status(response.status_code, error_status.message, errors=[error_status]) return response.content
def _error_result_to_exception(error_result): """Maps BigQuery error reasons to an exception. The reasons and their matching HTTP status codes are documented on the `troubleshooting errors`_ page. .. _troubleshooting errors: https://cloud.google.com/bigquery\ /troubleshooting-errors :type error_result: Mapping[str, str] :param error_result: The error result from BigQuery. :rtype google.cloud.exceptions.GoogleCloudError: :returns: The mapped exception. """ reason = error_result.get('reason') status_code = _ERROR_REASON_TO_EXCEPTION.get( reason, http_client.INTERNAL_SERVER_ERROR) return exceptions.from_http_status( status_code, error_result.get('message', ''), errors=[error_result])
def _request(http, project, method, data, base_url): """Make a request over the Http transport to the Cloud Datastore API. :type http: :class:`requests.Session` :param http: HTTP object to make requests. :type project: str :param project: The project to make the request for. :type method: str :param method: The API call method name (ie, ``runQuery``, ``lookup``, etc) :type data: str :param data: The data to send with the API call. Typically this is a serialized Protobuf string. :type base_url: str :param base_url: The base URL where the API lives. :rtype: str :returns: The string response content from the API call. :raises: :class:`google.cloud.exceptions.GoogleCloudError` if the response code is not 200 OK. """ headers = { 'Content-Type': 'application/x-protobuf', 'User-Agent': connection_module.DEFAULT_USER_AGENT, connection_module.CLIENT_INFO_HEADER: _CLIENT_INFO, } api_url = build_api_url(project, method, base_url) response = http.request( url=api_url, method='POST', headers=headers, data=data) if response.status_code != 200: error_status = status_pb2.Status.FromString(response.content) raise exceptions.from_http_status( response.status_code, error_status.message, errors=[error_status]) return response.content
def test_from_http_status_unknown_code(): message = 'message' status_code = 156 exception = exceptions.from_http_status(status_code, message) assert exception.code == status_code assert exception.message == message
def test_from_http_status(): message = 'message' exception = exceptions.from_http_status(http_client.NOT_FOUND, message) assert exception.code == http_client.NOT_FOUND assert exception.message == message assert exception.errors == []
def test_from_http_status_unknown_code(): message = "message" status_code = 156 exception = exceptions.from_http_status(status_code, message) assert exception.code == status_code assert exception.message == message
def test_from_http_status(): message = "message" exception = exceptions.from_http_status(http_client.NOT_FOUND, message) assert exception.code == http_client.NOT_FOUND assert exception.message == message assert exception.errors == []