
    ay                     z    d dl mZ d dlmZmZ d dlmZ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  G d de      Zy)    )BaseAdapter)urlparseunquote)ResponsecodesN)BytesIOc                   ,     e Zd Zd fd	Zd Zd Z xZS )FileAdapterc                 8    t         t        |           || _        y N)superr
   __init___set_content_length)selfset_content_length	__class__s     -lib/python3.12/site-packages/requests_file.pyr   zFileAdapter.__init__   s    k4)+#5     c                    |j                   dvrt        d|j                   z        t        |j                        }|j                  r|j                  dk7  rt        d      t               }	 |j                  j                  d      D cg c]  }t        |       }}|r|d   s|j                  d       |r|d   st        d |D              r;t        t        j                  t        j                  t        j                              |rs|d   j!                  d      s|d   j!                  d	      rK|j                  d      }|j!                  d      r|d
d d	z   }|r!|d   s|j                  d       |r	|d   snd}|t        j"                  z   t        j                  j$                  | z   }|rPt        j                  j'                  |      s1t        j"                  t        j                  j$                  |g| z   }t)        j*                  |d      |_        |j,                  j.                  |j,                  _        t2        j4                  |_        |j                  |_        t        j8                  |j,                  j;                               }	t=        j>                  |	j@                        r%| jB                  r|	jD                  |jF                  d<   |S c c}w # t        $ r}
|
j                  t        jH                  k(  rt2        jJ                  |_        nH|
j                  t        j                  k(  rt2        jL                  |_        nt2        jN                  |_        tQ        |
      jS                  tU        jV                  d            }tY        |      |_        | jB                  rt[        |      |jF                  d<   |j,                  j.                  |j,                  _        Y d
}
~
|S d
}
~
ww xY w)z Wraps a file, described in request, in a Response object.

            :param request: The PreparedRequest` being "sent".
            :returns: a Response object containing the file
        )GETHEADzInvalid request method %s	localhostz5file: URLs with hostname components are not permitted/r   c              3   @   K   | ]  }t         j                  |v   y wr   )ossep).0ps     r   	<genexpr>z#FileAdapter.send.<locals>.<genexpr>4   s     3
1266Q;
s   |:N rbzContent-LengthF).method
ValueErrorr   urlnetlocr   pathsplitr   popanyIOErrorerrnoENOENTr   strerrorendswithr   join
splitdriveioopenrawcloserelease_connr   okstatus_codefstatfilenostatS_ISREGst_moder   st_sizeheadersEACCES	forbidden	not_foundbad_requeststrencodelocalegetpreferredencodingr   len)r   requestkwargs	url_partsrespr   
path_parts
path_driver)   	resp_stateresp_strs               r   sendzFileAdapter.send   s    >>087>>IJJ W[[)	 	 0 0K ?TUUz
G	C /8nn.B.B3.GH.G'!*.GJH Z]q! Z]
 3
33ellBKK,EFF 1&&s+z!}/E/Ec/J'^^A.
&&s+!+CR3!6J ANN1% !A  

 &z)BBD "''"4"4T":vvZ E* EE wwtT*DH$(HHNNDHH!(  %xxD{{DH !23I||I--.43K3K1:1B1B-.M IV  	3ww%,,&#(?? ELL(#(?? #(#4#4 
 1v}}V%@%@%GHHx(DH''14X-. %)HHNNDHH!! 7	3s9   -K" 
K!K" >C K" ?CK" K" "
O8,DO33O8c                      y r    )r   s    r   r7   zFileAdapter.closet   s    r   )T)__name__
__module____qualname__r   rT   r7   __classcell__)r   s   @r   r
   r
      s    6`Dr   r
   )requests.adaptersr   requests.compatr   r   requestsr   r   r.   r   r=   rH   r4   sixr   r
   rV   r   r   <module>r_      s.    ) - $  	   	 h+ hr   