
    'wf-&                         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mZ d dlZd dlm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z' d dl(Z)d dl*m+Z+m,Z,  G d d	      Z-y)
    N)DictOptional)ClientConnectionErrorClientConnectorErrorClientHttpProxyErrorClientProxyConnectionErrorClientSSLErrorServerDisconnectedErrorServerTimeoutError)URL)MAX_POOL_CONNECTIONSConnectionClosedErrorConnectTimeoutErrorEndpointConnectionErrorHTTPClientErrorInvalidProxiesConfigErrorLocationParseErrorProxyConfigurationProxyConnectionErrorReadTimeoutErrorSSLError_is_ipaddresscreate_urllib3_contextensure_booleanget_cert_pathloggermask_proxy_url	parse_urlurlparse)CIMultiDict)_IOBaseWrapper_textc            	       v    e Zd Zdddeddddfdedeeef   dedefdZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)AIOHTTPSessionTNverifyproxiestimeoutmax_pool_connectionsc	                    t        j                         | _        i | _        || _        t        ||      | _        t        |t        t        f      r|\  }	}
n|x}	}
t        j                  |	|
      }d | _        d | _        t        |t              r|| _        nt        |t              r|\  | _        | _        || _        || _        | j                   t#        d      | _        || _        || _        |g | _        y y )N)r&   proxies_settings)sock_connect	sock_read   )keepalive_timeout)
contextlibAsyncExitStack_exit_stack	_sessions_verifyr   _proxy_config
isinstancelisttupleaiohttpClientTimeout
_cert_file	_key_filestr_timeout_connector_argsdict_max_pool_connections_socket_options)selfr%   r&   r'   r(   socket_optionsclient_certproxies_configconnector_argsconn_timeoutread_timeouts              k/home/panchajanya/Development/work/volatility3/venv/lib/python3.12/site-packages/aiobotocore/httpsession.py__init__zAIOHTTPSession.__init__/   s     &446 FH/n
 ge}-)0&L,*11L<''%
 k3')DOU+.9+DOT^-' $("#=D %9"-!#%D  "    c                 *   K   | j                   rJ | S wN)r2   rB   s    rI   
__aenter__zAIOHTTPSession.__aenter__d   s     >>!!s   c                    K   | j                   j                          | j                  j                          d {    y 7 wrM   )r2   clearr1   aclose)rB   exc_typeexc_valexc_tbs       rI   	__aexit__zAIOHTTPSession.__aexit__i   s.     %%'''s   8AA Ac                     t               S rM   )r   rN   s    rI   _get_ssl_contextzAIOHTTPSession._get_ssl_contextm   s    %''rK   c                    | j                   j                  }|j                  d      }|j                  d      }||y | j                         }	 t	        |      }t        |j                        sd|_        ||j                  |       t        |t              r|j                  |d   |d          |S t        |t              r|j                  |       |S # t        t        f$ r}t        |      d }~ww xY w)	Nproxy_ca_bundleproxy_client_certT)cafiler      )keyfileerror)r4   settingsgetrX   r   r   hostcheck_hostnameload_verify_locationsr5   r7   load_cert_chainr<   OSErrorr   r   )rB   	proxy_urlr*   rZ   
proxy_certcontexturles           rI   _setup_proxy_ssl_contextz'AIOHTTPSession._setup_proxy_ssl_contextp   s    --66*../@A%))*=>
"z'9'')	5I&C !*)-&*--_-E*e,''
1z!}'M N J,''
3N+, 	5+!44	5s   A%C 5"C C8'C33C8c                 b    |j                  dd      }|j                         dk(  x}r|d= |xs d S )NzTransfer-Encoding chunked)rb   lower)rB   headerstransfer_encodingrp   s       rI   _chunkedzAIOHTTPSession._chunked   s@    #KK(;R@'--/9<<7<+,$rK   c                    d }t        | j                        r|r| j                  |      }n| j                         }|r\| j                  r&|j                  | j                  | j                         t        | j                        }|r|j                  |d d        t        j                  d| j                  |xs dd| j                  S )NF)limitssl )boolr3   rm   rX   r:   rf   r;   r   re   r8   TCPConnectorr@   r>   )rB   rh   ssl_contextca_certss       rI   _create_connectorz AIOHTTPSession._create_connector   s    ";;IF #335??// )655hdK## 
,,$u
 ""
 	
rK   c                   K   | j                   j                  |      x}se| j                  |      }| j                  j	                  t        j                  || j                  dhd             d {   x| j                   |<   }|S 7 w)NzCONTENT-TYPEF)	connectorr'   skip_auto_headersauto_decompress)r2   rb   r}   r1   enter_async_contextr8   ClientSessionr=   )rB   rh   sessionr   s       rI   _get_sessionzAIOHTTPSession._get_session   s     >>--i888..y9I !% 0 0 D D%%' MM'5&6$)	! 	DNN s   A/B	1B2B	c                 F   K   | j                  d d d        d {    y 7 wrM   )rV   rN   s    rI   closezAIOHTTPSession.close   s     nnT4...s   !!c           	        K   	 | j                   j                  |j                        }| j                   j                  |j                        }|j                  }|j                  }|j
                  }t        t        j                  j                  dd            r$t        |j                        j                  }||d<   t        d |j                         D              }d|d<   t        |t        j                         rt#        |      }t%        |d      }| j'                  |       d {   }	|	j)                  |j*                  || j-                  |      ||||	       d {   }
t.        j0                  j3                  t5        |
j                        |
j6                  |
j                  |
      }|j8                  s|j:                   d {    |S 7 7 q7 
# t<        $ r}t?        |j                  |
      d }~wt@        tB        f$ r}tE        tG              |      d }~wtH        tJ        jL                  tJ        jN                  jP                  f$ r}tS        |||j                        d }~wtT        $ r[}t5        |      jW                         jY                  d      rt[        |j                  |
      t]        |j                  |
      d }~wt^        t`        tb        jd                  f$ r}tg        |j                  |
      d }~wth        jj                  $ r}t]        |j                  |
      d }~wtl        $ r*}d}to        jp                  |d       ts        |      d }~ww xY ww)N(BOTO_EXPERIMENTAL__ADD_PROXY_HOST_HEADERro   rc   c              3   F   K   | ]  }|d    t        |d   d      f  yw)r   r]   zutf-8)encodingN)r"   ).0zs     rI   	<genexpr>z&AIOHTTPSession.send.<locals>.<genexpr>   s)      #:;1uQqTG45#s   !identityzAccept-EncodingT)encoded)rk   rp   rr   dataproxyproxy_headers)endpoint_urlr`   )rh   r`   )r`   requestr   connectz4Exception received when sending urllib3 HTTP request)exc_infor_   ):r4   proxy_url_forrk   proxy_headers_forrr   bodyr   osenvironrb   r   hostnamer    itemsr5   ioIOBaser!   r   r   r   methodrt   aiobotocore
awsrequestAioAWSResponser<   statusstream_outputcontentr	   r   r   r   r   r   r
   r8   ClientPayloadErrorhttp_exceptionsBadStatusLiner   r   rq   
startswithr   r   r   r   socketgaierrorr   asyncioTimeoutError	Exceptionr   debugr   )rB   r   rh   r   rk   rr   r   rc   headers_r   responsehttp_responserl   messages                 rI   sendzAIOHTTPSession.send   s    P	+**88EI ..@@MM++CooG<<D

I2N  ,55(,f%" #?F}}# H
 +5H&'$		*%d+c4(C --i88G$__h/ + -  H (22AAHLL!8??H4D4DhM (( $++++  + 9$ ,  	>1==*,@A 	&(31  $&&##11
 	
 (w{{  " 	J1v||~((3)w{{!LL&GKKqII !OO
 	M
 *w{{!LL## 	F"1EE 	+LGLL40!**	+s   M.D&G *G+8G #G$A(G GG M.G G G 	M+"G99M+H!!5M+I..M+:AK!M+1LM+L55M+%M&&M++M.)__name__
__module____qualname__r   ry   r   r<   floatintrJ   rO   rV   rX   rm   rt   r}   r   r   r   rx   rK   rI   r$   r$   .   s~     "&$8/&/& c3h/& 	/&
 "/&j
((54
8 /Q+rK   r$   ).r   r/   r   r   r   typingr   r   r8   r   r   r   r   r	   r
   r   aiohttp.clientr   botocore.httpsessionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	multidictr    aiobotocore.awsrequestr   aiobotocore._endpoint_helpersr!   r"   r$   rx   rK   rI   <module>r      sc      	 	  !         * "  ?c+ c+rK   