
    ]j                         d dl mZ d dlmZ d dlmZmZmZ d dl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  G d de      Zy)	    )BytesIO)BaseAdapter)PreparedRequestResponsecodes)Any)urlparseunquoteNc                   J     e Zd Zd
deddf fdZdedededefdZdd	Z	 xZ
S )FileAdapterset_content_lengthreturnNc                 8    t         t        |           || _        y N)superr   __init___set_content_length)selfr   	__class__s     @/root/env/lib/python3.12/site-packages/requests_file/__init__.pyr   zFileAdapter.__init__   s    k4)+#5     requestargskwargsc                    |j                   dvrt        d|j                   z        t               }	 |j                  <t	        t
        j                  t        j                  t
        j                        d      t        |j                        }|j                  r|j                  dk7  rt        d      ||_        |j                  |j                  |_        |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.                  j0                  |j.                  _        t4        j6                  |_        t        j:                  |j.                  j=                               }
t?        j@                  |
jB                        r.| jD                  r"tG        |
jH                        |jJ                  d<   |S c c}w # t        $ r%}|j
                  t
        jL                  k(  rt4        jN                  |_        nH|j
                  t
        j                  k(  rt4        jP                  |_        nt4        jR                  |_        tG        |      jU                  tW        jX                  d            }t[        |      |_        tG        |      |_.        | jD                  r!tG        t_        |            |jJ                  d<   |j.                  j0                  |j.                  _        Y d}~|S d}~ww xY w)zWraps 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 %sNNone	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>=   s     31266Q;3s   |: rbzContent-LengthF)0method
ValueErrorr   urlIOErrorerrnoENOENTr"   strerrorr	   netlocr   pathsplitr
   popanyendswithr#   join
splitdriveioopenrawcloserelease_connr   okstatus_codefstatfilenostatS_ISREGst_moder   strst_sizeheadersEACCES	forbidden	not_foundbad_requestencodelocalegetpreferredencodingr   reasonlen)r   r   r   r   resp	url_partsr%   
path_parts
path_driver4   	resp_stateresp_strs                r   sendzFileAdapter.send   sY    >>087>>IJJz
W	H{{"ellBKK,EvNN !-I I$4$4$C !XYY"DL{{&";; /8nn.B.B3.GH'!*HJ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 !23I||I--.43K3K14Y5F5F1G-.M IV  	3ww%,,&#(?? ELL(#(?? #(#4#4 
 1v}}V%@%@%GHHx(DHa&DK''14S]1C-. %)HHNNDHH!! 7	3s9   CM 6M!M *C M +CM M 
Q5DQ00Q5c                      y r    )r   s    r   r>   zFileAdapter.close}   s    r   )T)r   N)__name__
__module____qualname__boolr   r   r   r   rZ   r>   __classcell__)r   s   @r   r   r      sB    64 64 6iO iC i3 i8 iVr   r   )r;   r   requests.adaptersr   requestsr   r   r   typingr   urllib.parser	   r
   r0   r"   rD   rO   r   r\   r   r   <module>rf      s4     ) 5 5  *  	   	q+ qr   