
    .
0h                     f    d Z ddlZddlZddlZddlZddlZddlmZ ddlmZ d	dZ	d Z
d
dZd ZdS )z:Internal utilities for interacting with Google API client.    N)
exceptions)_utilsc                 F   t          | t          j        j                  st	          |           S | j                                        }| j        j        }t          j
        ||          \  }}t          |           }d}|r || |||          }|r|nt          | |||          S )au  Constructs a ``FirebaseError`` from the given googleapiclient error.

    This can be used to handle errors returned by Google Cloud Platform (GCP) APIs.

    Args:
        error: An error raised by the googleapiclient while making an HTTP call to a GCP API.
        handle_func: A function that can be used to handle platform errors in a custom way. When
            specified, this function will be called with three arguments. It has the same
            signature as ```_handle_func_googleapiclient``, but may return ``None``.

    Returns:
        FirebaseError: A ``FirebaseError`` that can be raised to the user code.
    N)
isinstancegoogleapiclienterrors	HttpErrorhandle_googleapiclient_errorcontentdecoderespstatusr   _parse_platform_error)_http_response_from_googleapiclient_error_handle_func_googleapiclient)errorhandle_funcr   status_code
error_dictmessagehttp_responseexcs           V/var/www/html/nourish/venv/lib/python3.11/site-packages/firebase_admin/_gapic_utils.py*handle_platform_error_from_googleapiclientr      s     e_3=>> 3+E222m""$$G*#K 6wLLJ=eDDM
C Ek%*mDDb337w
Tabbb    c                 P    |                     d          }t          | |||          S )a  Constructs a ``FirebaseError`` from the given GCP error.

    Args:
        error: An error raised by the googleapiclient module while making an HTTP call.
        message: A message to be included in the resulting ``FirebaseError``.
        error_dict: Parsed GCP error response.
        http_response: A requests HTTP response object to associate with the exception.

    Returns:
        FirebaseError: A ``FirebaseError`` that can be raised to the user code or None.
    r   )getr
   )r   r   r   r   codes        r   r   r   8   s)     >>(##D'wmLLLr   c                    t          | t          j                  s+t          | t          j                  r:dt	          |           v r)t          j        d                    |           |           S t          | t          j	                  r)t          j
        d                    |           |           S t          | t          j        j                  s)t          j        d                    |           |           S |st          j        | j        j                  }|st	          |           }|st'          |           }t          j        |          } ||| |          S )a&  Constructs a ``FirebaseError`` from the given googleapiclient error.

    This method is agnostic of the remote service that produced the error, whether it is a GCP
    service or otherwise. Therefore, this method does not attempt to parse the error response in
    any way.

    Args:
        error: An error raised by the googleapiclient module while making an HTTP call.
        message: A message to be included in the resulting ``FirebaseError`` (optional). If not
            specified the string representation of the ``error`` argument is used as the message.
        code: A GCP error code that will be used to determine the resulting error type (optional).
            If not specified the HTTP status code on the error response is used to determine a
            suitable error code.
        http_response: A requests HTTP response object to associate with the exception (optional).
            If not specified, one will be created from the ``error``.

    Returns:
        FirebaseError: A ``FirebaseError`` that can be raised to the user code.
    z	timed outz'Timed out while making an API call: {0})r   causez%Failed to establish a connection: {0}z5Unknown error while making a remote service call: {0})r   r    r   )r   sockettimeoutr   strr   DeadlineExceededErrorformathttplib2ServerNotFoundErrorUnavailableErrorr   r   r	   UnknownErrorr   _http_status_to_error_coder   r   r   _error_code_to_exception_type)r   r   r   r   err_types        r   r
   r
   H   si   ( %(( ufl++0;s5zz0I0I/=DDUKK   	 %566 *;BB5II   	 e_3=>> &KRRSXYY   	  D01BCC e** IA%HH3D99H8G5NNNNr   c                     t           j                                        }t          j        | j                  |_        | j        j        |_	        |S )zMCreates a requests HTTP Response object from the given googleapiclient error.)
requestsmodelsResponseioBytesIOr   rawr   r   r   )r   r   s     r   r   r   u   s:    ?##%%Dz%-((DHz(DKr   )N)NNN)__doc__r1   r!   r   r&   r.   firebase_adminr   r   r   r   r
   r    r   r   <module>r7      s    A @ 				        % % % % % % ! ! ! ! ! !c c c c8M M M *O *O *O *OZ    r   