
    "|h@                    l    d dl mZ d dlmZ d dlZd dlZd dlmZ dZdZdZ	 G d d	      Z
 G d
 d      Zy)    )annotations)datetimeN)OptionaliZzhttps://api.play.ht/apizprod.turbo.play.ht:443c                  b    e Zd ZddZedd	d       Zeefd
d       Zedd       Z	edd       Z
y)Leasec                    || _         t        j                  | j                   dd d      | _        t        j                  | j                   dd d      | _        t        j                  | j                   dd  j                               | _        y )N@   D   big)	byteorderH   )	dataint
from_bytescreateddurationjsonloadsdecodemetadata)selfr   s     I/var/www/html/test/engine/venv/lib/python3.12/site-packages/pyht/lease.py__init__zLease.__init__   sj    	~~dii2&6%~HtyyB'75I

499RS>#8#8#:;    c                   |j                  d      sd| n|}||d}t        j                  | d|d      5 }	 |j                          |j                  cd d d        S # t        j
                  $ rE}|r<|j                  j                  dk\  r#| j                  |||d      cY d }~cd d d        S |d }~ww xY w# 1 sw Y   y xY w)	NzBearer )z	X-User-IdAuthorizationz
/v2/leases<   )headerstimeouti  F)_retry)	
startswithrequestspostraise_for_statuscontent	HTTPErrorresponsestatus_code_get)	clsuser_idapi_keyapi_urlr    auth_headerapi_headersr'   es	            r   r)   z
Lease._get   s     (/'9'9)'DggY' 	 %,kJ]]iz"
 	 ))+''	 	 %% ajj44;88GWge8LL	 	 	 	s:   B;A  B83/B3"B8#B;1B33B88B;;Cc                    | j                  |||      }t        |      }|j                  t        j                         kD  sJ d       |S )Nz3Got an expired lease, is your system clock correct?)r)   r   expiresr   now)r*   r+   r,   r-   r   leases         r   getz	Lease.get(   sJ    xx'2d MMHLLN*	A@	A* r   c                h    t        j                  | j                  | j                  z   t        z         S N)r   fromtimestampr   r   EPOCHr   s    r   r2   zLease.expires3   s%    %%dllT]]&BU&JKKr   c                8    | j                   j                  d      S )Ninference_address)r   r5   r:   s    r   	grpc_addrzLease.grpc_addr7   s    }}  !455r   N)r   bytes)T)r+   strr,   r?   r-   r?   returnr>   )r+   r?   r,   r?   r-   r?   r@   z'Lease')r@   r   )r@   zOptional[str])__name__
__module____qualname__r   classmethodr)   DEFAULT_API_URLr5   propertyr2   r=    r   r   r   r      s\    <  $ <K   L L 6 6r   r   c                       e Zd ZefddZddZy)LeaseFactoryc                .    || _         || _        || _        y r7   )_user_key_url)r   r+   r,   r-   s       r   r   zLeaseFactory.__init__=   s    
		r   c                l    t         j                  | j                  | j                  | j                        S r7   )r   r5   rK   rL   rM   r:   s    r   __call__zLeaseFactory.__call__B   s!    yyTYY		::r   N)r+   r?   r,   r?   r-   r?   )r@   r   )rA   rB   rC   rE   r   rO   rG   r   r   rI   rI   <   s    BQ 
;r   rI   )
__future__r   r   r   r"   typingr   r9   rE   DEFAULT_GRPC_URLr   rI   rG   r   r   <module>rS      s;    "     	++ +6 +6\; ;r   