
    h                         d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZ  G d	 d
e      Zy)    N)Optional)verbose_logger)InMemoryCache)SECRET_MANAGER_REFRESH_INTERVAL)GCSBucketBase)_get_httpx_client)CommonProxyErrorsKeyManagementSystemc                   T     e Zd Zedfdee   dee   ddf fdZdedee   fdZ	 xZ
S )	GoogleSecretManagerFrefresh_intervalalways_read_secret_managerreturnNc                 n   ddl m} |dur&t        dt        j                  j
                         t        |           t        j                  j                  dd      | _        | j                  t        d      t               | _        | t        _        t         j"                  t        _        t        j                  j                  d|      }|rt'        |      n|}t)        |	      | _        t        j                  j                  d
      }|r|j-                         dk(  rd| _        y|xs d| _        y)a!  
        Args:
            refresh_interval (int, optional): The refresh interval in seconds. Defaults to 86400. (24 hours)
            always_read_secret_manager (bool, optional): Whether to always read from the secret manager. Defaults to False. Since we do want to cache values
        r   )premium_userTz5Google Secret Manager requires an Enterprise License  GOOGLE_SECRET_MANAGER_PROJECT_IDNzgGoogle Secret Manager requires a project ID, please set 'GOOGLE_SECRET_MANAGER_PROJECT_ID' in your .env&GOOGLE_SECRET_MANAGER_REFRESH_INTERVAL)default_ttl0GOOGLE_SECRET_MANAGER_ALWAYS_READ_SECRET_MANAGERtrueF)litellm.proxy.proxy_serverr   
ValueErrorr	   not_premium_uservaluesuper__init__osenvironget
PROJECT_IDr   sync_httpx_clientlitellmsecret_manager_clientr
   GOOGLE_SECRET_MANAGER_key_management_systemintr   cachelowerr   )selfr   r   r   _refresh_interval_always_read_secret_manager	__class__s         i/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/secret_managers/google_secret_manager.pyr   zGoogleSecretManager.__init__   s    	<t#GHYHjHjHpHpGqr  	**..)KTR??"y  "3!4(,%)<)R)R&JJNN46F
 '8C!"=M 	 #)

 ')jjnn>'
# (+113v=.2D+ /I.QED+    secret_namec                 z   | j                   dur9| j                  j                  |      }||S || j                  j                  v r|S d| j                   d| d}| j                         }d| d}| j                  j                  ||      }|j                  d	k7  r`t        j                  d
t        |j                               | j                  j                  |d       t        d| d|j                         t        j                  d|j                         |j!                         }|j                  di       j                  d      }|Bt#        j$                  |      j'                  d      }	| j                  j                  ||	       |	S | j                  j                  |d       t        d| d      )z
        Retrieve a secret from Google Secret Manager or cache.

        Args:
            secret_name (str): The name of the secret.

        Returns:
            str: The secret value if successful, None otherwise.
        TNz	projects/z	/secrets/z/versions/latestz(https://secretmanager.googleapis.com/v1/z:access)urlheaders   z)Google Secret Manager retrieval error: %szsecret z, not found in Google Secret Manager. Error: z8Google Secret Manager retrieval response status code: %spayloaddatazutf-8z# not found in Google Secret Manager)r   r'   	get_cache
cache_dictr    sync_construct_request_headersr!   r   status_coder   errorstrtext	set_cacher   debugjsonbase64	b64decodedecode)
r)   r/   cached_secret_secret_namer2   r1   responsesecret_data_base64_encoded_value_decoded_values
             r-   %get_secret_from_google_secret_managerz9GoogleSecretManager.get_secret_from_google_secret_manager>   s    **$6 JJ00=M($$djj333$$ (	+>NO 	 5578gN ))--#w-G3&  ;S=O JJ  T +&RS[S`S`Rab  	F  	
 mmo +	2 > B B6 J !,#--.CDKKGTNJJ  ^ "!

[$/7;-/RSTTr.   )__name__
__module____qualname__r   r   r&   boolr   r;   rI   __classcell__)r,   s   @r-   r   r      sU     +J5:-R"3--R %-TN-R 
	-R^7U 7URU 7Ur.   r   )r@   r   typingr   r"   litellm._loggingr   litellm.caching.cachingr   litellm.constantsr   /litellm.integrations.gcs_bucket.gcs_bucket_baser   &litellm.llms.custom_httpx.http_handlerr   litellm.proxy._typesr	   r
   r    r.   r-   <module>rW      s3     	   + 1 = I D GgU- gUr.   