
    Sj                     V    d dl Z d dlZd dlmZmZmZ ddlmZ  e       Z G d d      Zy)    N)OptionalDictAny   )get_versionc                      e Zd Z	 	 	 ddee   dedee   dedef
dZdd	Zdd
ee   de	eef   fdZ
	 	 	 	 ddede	eef   dee	eef      dee   dee   dee   dej                  fdZ	 	 	 	 ddedee	eef      dee   dee   dee   dej                  fdZ	 	 	 	 ddedee	eef      dee   dee   dee   dej                  fdZy)AsyncHttpClientNapi_keyapi_urltimeoutmax_retriesbackoff_factorc                     || _         || _        || _        || _        || _        ddi}|rd| |d<   t        j                  ||t        j                  d            | _        y )NzContent-Typezapplication/jsonzBearer Authorizationr   )max_keepalive_connections)base_urlheaderslimits)	r
   r   r   r   r   httpxAsyncClientLimits_client)selfr
   r   r   r   r   r   s          W/root/.hermes/venv/lib/python3.12/site-packages/firecrawl/v2/utils/http_client_async.py__init__zAsyncHttpClient.__init__
   sr     &, .
 )0	':GO$((<<!<
    returnc                 T   K   | j                   j                          d {    y 7 wN)r   aclose)r   s    r   closezAsyncHttpClient.close%   s     ll!!###s   (&(idempotency_keyc                     i }|r||d<   |S )Nzx-idempotency-key )r   r"   r   s      r   _headerszAsyncHttpClient._headers(   s    "$+:G'(r   endpointdatar   retriesc                   K   || j                   }|| j                  }|| j                  }t        |      }dt         |d<   d }t        d|      }	t        |	      D ]~  }
	 | j                  j                  ||i | j                         |xs i |       d {   }|j                  dk(  r,|
|	dz
  k  r$t        j                  |d|
z  z         d {    ||c S  |xs t        d      7 S7 # t        j                  $ r:}|}|
|	dz
  k(  r|t        j                  |d|
z  z         d {  7   Y d }~d }~ww xY ww)Nzpython-sdk@originr   )jsonr   r        z Unexpected error in POST request)r   r   r   dictversionmaxranger   postr%   status_codeasynciosleepr   	HTTPError	Exception)r   r&   r'   r   r   r(   r   payloadlast_exceptionnum_attemptsattemptresponsees                r   r2   zAsyncHttpClient.post.   sc     ?llG?&&G!!00Nt*)'31g\* 	EGE!%!2!2 Bt}}B7=bB#	 "3 "  ''3.!11%mmNa7l,KLLL 	E& M	*L MM# M ?? E!"lQ..GmmNa7l$CDDD	Esl   AE!8C1C-9C1C/C1EC1E-C1/C11D>*D9.D1/D94E9D>>Ec                 V  K   || j                   }|| j                  }|| j                  }d }t        d|      }t	        |      D ]}  }	 | j
                  j                  |i | j                         |xs i |       d {   }	|	j                  dk(  r,||dz
  k  r$t        j                  |d|z  z         d {    {|	c S  |xs t        d      7 S7 # t        j                  $ r:}
|
}||dz
  k(  r|
t        j                  |d|z  z         d {  7   Y d }
~
d }
~
ww xY ww)Nr   r   r   r,   r-   zUnexpected error in GET request)r   r   r   r0   r1   r   getr%   r3   r4   r5   r   r6   r7   r   r&   r   r   r(   r   r9   r:   r;   r<   r=   s              r   r@   zAsyncHttpClient.getY   sF     ?llG?&&G!!00N1g\* 	EGE!%!1!1Bt}}B7=bB# "2 " 
 ''3.!11%mmNa7l,KLLL 	E$ L	*K LL! M ?? E!"lQ..GmmNa7l$CDDD	El   AD)
7CC9C;C<C D)CD)CCD&,*D!DD!D)!D&&D)c                 V  K   || j                   }|| j                  }|| j                  }d }t        d|      }t	        |      D ]}  }	 | j
                  j                  |i | j                         |xs i |       d {   }	|	j                  dk(  r,||dz
  k  r$t        j                  |d|z  z         d {    {|	c S  |xs t        d      7 S7 # t        j                  $ r:}
|
}||dz
  k(  r|
t        j                  |d|z  z         d {  7   Y d }
~
d }
~
ww xY ww)Nr   r?   r,   r-   z"Unexpected error in DELETE request)r   r   r   r0   r1   r   deleter%   r3   r4   r5   r   r6   r7   rA   s              r   rD   zAsyncHttpClient.delete   sF     ?llG?&&G!!00N1g\* 	EGE!%!4!4Bt}}B7=bB# "5 " 
 ''3.!11%mmNa7l,KLLL 	E$ O	*N OO! M ?? E!"lQ..GmmNa7l$CDDD	ErB   )N   g      ?)r   Nr   )NNNN)__name__
__module____qualname__r   strfloatintr   r!   r   r%   r   r   Responser2   r@   rD   r$   r   r   r	   r	   	   s   
 $( #
#
 
 %	

 
 
6$ c3h  -1#'!%*.)N)N 38n)N $sCx.)	)N
 %)N #)N !)N 
)N\ -1#'!%*.$M$M $sCx.)$M %	$M
 #$M !$M 
$MR -1#'!%*.$P$P $sCx.)$P %	$P
 #$P !$P 
$Pr   r	   )	r4   r   typingr   r   r   r   r/   r	   r$   r   r   <module>rN      s)      & & $
-ZP ZPr   