
    i                         d dl mZmZ d dlmZ d dlmZ d dlmZ  e       Z	 G d d      Z
ej                  j                  ddd	
      d	uZer e
       Zy	d	Zy	)    )ListOptional)Console)create_client)config_managerc                       e Zd Zd Zddedededededee   d	efd
Zddee   dedededee	   d	e
fdZdededed	ee   fdZy)ExternalSupaDBVaultc                 f    t         j                  j                  dd       d| _        ddi| _        y )Nexternal_supa_dburlz/functions/v1zContent-Typezapplication/json)r   
remote_cdmgetbase_urlheaders)selfs    d/home/nidran/Documenti/script/streaming-community/StreamingCommunity/utils/vault/external_supa_db.py__init__zExternalSupaDBVault.__init__   s5    )44889KUSTTab.
    Nlicense_urlpsshkidkeydrm_typelabelreturnc                    | j                    d}||||||d}	 t        | j                        j                  ||      }	|	j	                          |	j                         }
|
j                  d      ryt        j                  d|
j                  dd	              y
# t        $ r"}t        j                  d|        Y d}~y
d}~ww xY w)z
        Add a key to the vault
        
        Returns:
            bool: True if added successfully, False otherwise
        z/set-key)r   r   r   r   r   r   r   jsonsuccessTu   [yellow]⚠ messagezKey already existsFz[red]Error adding key: N)
r   r   r   postraise_for_statusr   r   consoleprint	Exception)r   r   r   r   r   r   r   r   payloadresponseresultes               r   set_keyzExternalSupaDBVault.set_key   s     x( ' 
	$T\\:??'?RH%%']]_Fzz)$VZZ	CW-X,YZ[ 	MM3A378	s   AB 3(B 	C%CC	keys_listkid_to_labelc           	          |syd}|D ][  }d|vr|j                  dd      \  }}	|r|j                  |j                               nd}
| j                  ||||	||
      sW|dz  }] |S )z
        Add multiple keys to the vault in batch
        
        Args:
            keys_list: List of "kid:key" strings
            
        Returns:
            int: Number of keys successfully added
        r   :   N)splitr   lowerr+   )r   r,   r   r   r   r-   added_countkey_strr   r   r   s              r   set_keyszExternalSupaDBVault.set_keys9   s       	!G'!}}S!,HC5AL$$SYY[1tE||KsC5Iq 	! r   c                    | j                    d}|||d}	 t        | j                        j                  ||      }|j	                          |j                         }|j                  dg       }|rt        j                  d       t        j                  d| d|d	d
  d       |D ]Y  }	|	d   j                  d      \  }
}|d	d dz   }|	j                  d      rd|	d    nd}t        j                  d|
 d| |        [ |D cg c]  }|d   	 c}S c c}w # t        $ r$}t        j                  d|        g cY d	}~S d	}~ww xY w)z
        Retrieve all keys for a given license URL and PSSH
        
        Returns:
            List[str]: List of "kid:key" strings
        z	/get-keys)r   r   r   r   r   keysz[cyan]Using Supabase Vault.z[red]z [cyan](PSSH: [yellow]N   z...[cyan] KID: [red]N/A)kid_keyr/   *r   z [cyan]| [red] z    - [red]z[white]:[green]z[red]Error fetching keys: )r   r   r   r"   r#   r   r   r$   r%   r1   r&   )r   r   r   r   r   r'   r(   r)   r7   key_datar   key_val
masked_key	label_strkr*   s                   r   get_keys_by_psshz$ExternalSupaDBVault.get_keys_by_psshT   s_    y) ' 
	$T\\:??'?RH%%']]_F::fb)D;<hZ/Ed3Bi[Phij $ ]H#+I#6#<#<S#ALC!("!3JHPU\H].'1B0C DceIMMKuOJ<PY{"[\	] +//QAiL/// 	MM6qc:;I	s0   C1D DD D 	E	%E>E	E	)N)__name__
__module____qualname__r   strr   boolr+   r   dictintr5   rB    r   r   r	   r	      s    
 3  c    #  QT  ]efi]j  vz  D$s) s  TW goptgu   BE 6%C %s %c %dSVi %r   r	   r   r   N)default)typingr   r   rich.consoler   $StreamingCommunity.utils.http_clientr   StreamingCommunity.utils.configr   r$   r	   r   r   is_supa_external_db_validobj_externalSupaDbVaultrJ   r   r   <module>rR      se    " ! > : )i iZ +5599:Le]a9bjnn 3L-/ RV r   