
    ZTh                         d dl m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  e
dg d	d
      Z G d de      ZdedefdZ G d de      Z G d de      Zy)    )ABC)	TypedDictN)HTTPAdapter)NotRequired)Retry)
_clean_uri   )i  i  i  i     )totalstatus_forcelistbackoff_factorc                   V    e Zd ZU dZeed<   eed<   ee   ed<   ee   ed<   ee   ed<   y)SiftRestConfiga  
    Config class used to to interact with services that use Sift's REST API.`.
    - `uri`: The URI of Sift's REST API. The scheme portion of the URI i.e. `https://` should be ommitted.
    - `apikey`: User-generated API key generated via the Sift application.
    - `retry`: Urllib3 Retry configuration. If not provided, a default of 3 retries is used.
    - `use_ssl`: INTERNAL USE. Meant to be used for local development.
    - `cert_via_openssl`: Enable this if you want to use OpenSSL to load the certificates.
    Run `pip install sift-stack-py[openssl]` to install the dependencies required to use this option.
    Default is False.
    uriapikeyretryuse_sslcert_via_opensslN)	__name__
__module____qualname____doc__str__annotations__r   r   bool     Q/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_py/rest.pyr   r      s4    	 
HKu!$''r   r   restconfreturnc                 `    | d   }| j                  dd      }t        ||      }|rd| S d| S )Nr   r   Thttps://http://)getr   )r   r   r   	clean_uris       r   compute_urir&   !   sD    
5/Cll9d+G3(I)%%YK  r   c                   2     e Zd ZdZdef fdZ fdZ xZS )_SiftHTTPAdapterzSift specific HTTP adapter.	rest_confc                 d    || _         |j                  dt              |d<   t        |   |i | y )Nr   max_retries)
_rest_confr$   _DEFAULT_REST_RETRYsuper__init__)selfr)   argskwargs	__class__s       r   r/   z_SiftHTTPAdapter.__init__/   s2    # )g7J K}$)&)r   c                     | j                   j                  dd      r*	 dd l}|j                         }|j	                          ||d<   t        |    |i |S # t
        $ r}t        d      |d }~ww xY w)Nr   Fr   ssl_contextzMissing required dependencies for cert_via_openssl. Run `pip install sift-stack-py[openssl]` to install the required dependencies.)	r,   r$   sslcreate_default_contextload_default_certsImportError	Exceptionr.   init_poolmanager)r0   r1   r2   r6   contexter3   s         r   r;   z!_SiftHTTPAdapter.init_poolmanager4   s    ??159	446**,(/}%
 w'888	   Ys   )A 	A1 A,,A1)r   r   r   r   r   r/   r;   __classcell__)r3   s   @r   r(   r(   ,   s    %*. *
9 9r   r(   c                       e Zd ZdZdefdZy)_RestServicez:
    Abstract service that implements a REST session.
    r)   c                 >   || _         t        |      | _        |d   | _        t	        j
                         | _        dd| j                   i| j                  _        t        |      }| j                  j                  d|       | j                  j                  d|       y )Nr   AuthorizationzBearer r"   r#   )
r,   r&   	_base_uri_apikeyrequestsSession_sessionheadersr(   mount)r0   r)   adapters      r   r/   z_RestService.__init__H   s    #$Y/ * ((*!0GDLL>2J K"9-J0Iw/r   N)r   r   r   r   r   r/   r   r   r   r@   r@   C   s    
0. 
0r   r@   )abcr   typingr   rE   requests.adaptersr   typing_extensionsr   urllib3.utilr   sift_py.grpc.transportr   r-   r   r   r&   r(   r@   r   r   r   <module>rQ      sb       ) )  -!6J[\] (Y (&!. !S !9{ 9.03 0r   