
    i?1iA)                    4   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZmZ d dlZd dlmZmZmZmZ d dlmZmZmZ d dlmZmZ d d	lmZmZ erd d
l m!Z! dZ"dZ# ejH                  e      Z% G d d      Z& G d de&      Z' G d de&      Z(y)    )annotationsN)
HTTPStatus)metadata)TYPE_CHECKINGAnyCallable)ignore_docsis_content_type_jsonis_content_type_textis_content_type_xml)ApifyApiErrorInvalidResponseBodyErroris_retryable_error)log_contextlogger_name)retry_with_exp_backoffretry_with_exp_backoff_async)JSONSerializable      c                      e Zd Zeddddd	 	 	 	 	 	 	 	 	 	 	 d
d       Zedd       Zedd       Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd	Zy)_BaseHTTPClientN     ih  )tokenmax_retries min_delay_between_retries_millistimeout_secsc                  || _         || _        || _        ddi}t        j                  d      }|||d<   dt        j
                  v }dj                  t        j                  d d D cg c]  }t        |       c}      }	t        j                  d      }
d	|
 d
t        j                   d|	 d| }||d<   |d| |d<   t        j                  |d|      | _        t        j                   |d|      | _        y c c}w )NAcceptzapplication/json, */*APIFY_WORKFLOW_KEYzX-Apify-Workflow-KeyAPIFY_IS_AT_HOME.   zapify-clientzApifyClient/z (z	; Python/z); isAtHome/z
User-AgentzBearer AuthorizationT)headersfollow_redirectstimeout)r   r   r   osgetenvenvironjoinsysversion_infostrr   versionplatformhttpxClienthttpx_clientAsyncClienthttpx_async_client)selfr   r   r   r   r&   workflow_key
is_at_homexpython_versionclient_version
user_agents               c/home/www/therecruiter.miabetepe.com/venv/lib/python3.12/site-packages/apify_client/_http_client.py__init__z_BaseHTTPClient.__init__   s    '0P-(45yy!56#.:G*+'2::5
33C3CBQ3G"Ha3q6"HI!)).9#N#32cll^9^L\\hishtu
 *)0'8GO$!LL4Yef"'"3"3GVZdp"q #Is   (C<c                   | j                   t        j                  k(  ry d}d| j                  v r/| j                  d   j	                  d      d   j                         }	 t        |      r| j                         S t        |      st        |      r| j                  S | j                  S # t        $ r}t        |       |d }~ww xY w)N zcontent-type;r   )status_coder   
NO_CONTENTr&   splitstripr
   jsonr   r   textcontent
ValueErrorr   )responsecontent_typeerrs      r>   _maybe_parse_responsez%_BaseHTTPClient._maybe_parse_response>   s    :#8#88X---#++N;AA#FqIOOQL	>#L1}}&$\26J<6X}}$''' 	>*84#=	>s$   B( :!B( B( (	C1B==Cc                    | y i }| j                         D ]Q  \  }}t        |t              rt        |      ||<   %t        |t              rdj                  |      ||<   J|M|||<   S |S )N,)items
isinstanceboolintlistr,   )paramsparsed_paramskeyvalues       r>   _parse_paramsz_BaseHTTPClient._parse_paramsQ   st    >  ,,. 	+JC%&%(Zc"E4(%(XXe_c""%*c"	+     c                b   |r|rt        d      |si }|r1t        j                  |ddt              j	                  d      }d|d<   t        |t        t        t        f      r;t        |t              r|j	                  d      }t        j                  |      }d|d<   || j                  |      |fS )	Nz?Cannot pass both "json" and "data" parameters at the same time!F)ensure_ascii	allow_nandefaultzutf-8zapplication/jsonzContent-TypegzipzContent-Encoding)rJ   jsonlibdumpsr/   encoderR   bytes	bytearrayr`   compressrZ   )r7   r&   rV   datarG   s        r>   _prepare_request_callz%_BaseHTTPClient._prepare_request_callc   s     D^__G ==EUTWX__`ghD&8GN#dS%34$${{7+==&D*0G&' v&
 	
r[   )r7   r   r   z
str | Noner   rT   r   rT   r   rT   returnNone)rK   httpx.Responseri   r   )rV   dict | Noneri   rl   )NNNN)r7   r   r&   rl   rV   rl   rg   r   rG   JSONSerializable | Noneri   ztuple[dict, dict | None, Any])	__name__
__module____qualname__r	   r?   staticmethodrN   rZ   rh    r[   r>   r   r      s     !03rr r 	r
 +.r r 
r r> > >$  &  $"(,


 
 	

 &
 
'
r[   r   c                  J    e Zd Zddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)
HTTPClientNTr&   rV   rg   rG   streamparse_responsec          
     j   
 t         j                  j                         t         j                  j                         rrt	        d       j                  ||      \  
 j                  d
 f	d}	t        |	 j                   j                  t        t              S )N5Cannot stream response and parse it at the same time!c                <  	 t         j                  j                  |       t        j	                  d       	 j                  	
      }j                  |xs d      }|j                  dk  rSt        j	                  dd|j                  i       s,rj                  |      n|j                  }t        |d	|       |S 	 t        j	                  dd|j                  i       |j                  dk  rG|j                  t        j                  k7  r*t        j	                  dd|j                  i        |         t        ||      # t        $ rF}t        j	                  d
|       t        |      st        j	                  d|        |          d }~ww xY wNzSending request)methodurlr&   rV   rI   F)requestrv   i,  zRequest successfulrC   )extra_maybe_parsed_bodyzRequest threw exception)exc_infozException is not retryablezRequest unsuccessfulr   zStatus code is not retryabler   attemptsetloggerdebugbuild_requestsendrC   rN   rI   setattr	Exceptionr   r   TOO_MANY_REQUESTSr   )stop_retryingr   r~   rK   r   erI   r&   r4   r|   rV   rw   r7   rv   r}   s         r>   _make_requestz&HTTPClient.call.<locals>._make_request   s   ##G,LL*+&44!#!# 5  (,,#!?U -  ''#-LL!5mXMaMa=bLc!UcT-G-G-Qiqiyiy**>@RS#O ." LL/xG[G[7\L]##c)h.B.BjFbFb.b;MS[SgSgChi'22  6C)!,LL!=LJ!Os   BE 	FAFFr   backoff_base_millisbackoff_factorrandom_factorr   r   r   rT   ri   rk   )r   r|   r   r}   rJ   rh   r4   r   r   r   "DEFAULT_BACKOFF_EXPONENTIAL_FACTORDEFAULT_BACKOFF_RANDOM_FACTOR)r7   r|   r}   r&   rV   rg   rG   rv   rw   r   rI   r4   s   `````  `` @@r>   callzHTTPClient.call   s     	v&C nTUU#'#=#=gvtUY#Z ((&	3 &	3P &(( $ E E=7
 	
r[   )r7   rt   r|   r/   r}   r/   r&   rl   rV   rl   rg   r   rG   rm   rv   bool | Nonerw   r   ri   rk   rn   ro   rp   r   rr   r[   r>   rt   rt      s      $"(,"&*D
D
 D
 	D

 D
 D
 D
 &D
 D
 $D
 
D
r[   rt   c                  J    e Zd Zddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)HTTPClientAsyncNTru   c          
        
K   t         j                  j                         t         j                  j                         rrt	        d       j                  ||      \  
 j                  d
 f	d}	t        |	 j                   j                  t        t               d {   S 7 w)Nry   c                X  	K   t         j                  j                  |       t        j	                  d       	 j                  	
      }j                  |xs d       d {   }|j                  dk  rSt        j	                  dd|j                  i       s,rj                  |      n|j                  }t        |d	|       |S 	 t        j	                  dd|j                  i       |j                  dk  rG|j                  t        j                  k7  r*t        j	                  dd|j                  i        |         t        ||      7 # t        $ rF}t        j	                  d
|       t        |      st        j	                  d|        |          d }~ww xY wwr{   r   )r   r   r~   rK   r   r   rI   r&   r6   r|   rV   rw   r7   rv   r}   s         r>   r   z+HTTPClientAsync.call.<locals>._make_request   s    ##G,LL*+,::!#!# ;  "4!8!8#!?U "9 "  ''#-LL!5mXMaMa=bLc!UcT-G-G-Qiqiyiy**>@RS#O ." LL/xG[G[7\L]##c)h.B.BjFbFb.b;MS[SgSgChi'227  6C)!,LL!=LJ!Os=   5F*0E )E*A%E BF*E 	F'!AF""F''F*r   r   )r   r|   r   r}   rJ   rh   r6   r   r   r   r   r   )r7   r|   r}   r&   rV   rg   rG   rv   rw   r   rI   r6   s   `````  `` @@r>   r   zHTTPClientAsync.call   s      	v&C nTUU#'#=#=gvtUY#Z !44&	3 &	3P 2(( $ E E=7
 
 	
 
s   B/C:B?;C)r7   r   r|   r/   r}   r/   r&   rl   rV   rl   rg   r   rG   rm   rv   r   rw   r   ri   rk   r   rr   r[   r>   r   r      s      $"(,"&*D
D
 D
 	D

 D
 D
 D
 &D
 D
 $D
 
D
r[   r   ))
__future__r   r`   rG   ra   loggingr)   r-   httpr   	importlibr   typingr   r   r   r2   apify_shared.utilsr	   r
   r   r   apify_client._errorsr   r   r   apify_client._loggingr   r   apify_client._utilsr   r   apify_shared.typesr   r   r   	getLoggerr   r   rt   r   rr   r[   r>   <module>r      s    "    	 
   / /  k k \ \ : T3 &' " ! 			;	'b
 b
JE
 E
PE
o E
r[   