
    ei                         d dl Z d dlZd dlmZmZmZmZ d dlmZ d dl	m
Z
mZ ddlmZmZmZ ddlmZ ddlmZ d	Z G d
 d          ZdS )    N)AnyIterableListOptional)	urlencode)	MultiDictMultiDictProxy   )hdrs	multipartpayload)guess_filename)Payload)FormDatac                      e Zd ZdZ	 	 	 ddddee         ded	ee         d
eddf
dZ	e
defd            Zdddddededee         dee         dee         ddfdZdeddfdZdej        fdZdej        fdZdefdZdS )r   ztHelper class for form body generation.

    Supports multipart/form-data and application/x-www-form-urlencoded.
     TNF)default_to_multipartfieldsquote_fieldscharsetr   returnc                0   t          j        d          | _        g | _        || _        || _        || _        t          |t                    r"t          |
                                          }nt          |t          t          f          s|f} | j        |  d S )N	form-data)r   MultipartWriter_writer_fields_is_multipart_quote_fields_charset
isinstancedictlistitemstuple
add_fields)selfr   r   r   r   s        N/var/www/html/volatility/venv/lib/python3.11/site-packages/aiohttp/formdata.py__init__zFormData.__init__   s     !0=="$1)fd## 	&,,..))FFFT5M22 	YF        c                     | j         S N)r   r&   s    r'   is_multipartzFormData.is_multipart)   s    !!r)   )content_typefilenamecontent_transfer_encodingnamevaluer.   r/   r0   c                <   t          |t          j                  rd| _        nDt          |t          t
          t          f          r"d}||t          j        |t                     |}t          d|i          }|'t          |t                    st          d|z            |*t          |t          j                  rt          ||          }|||d<   d| _        i }|Tt          |t                    st          d|z            d|v sd|v rt          d	          ||t          j        <   d| _        |Jt          |t                    st          d
|z            d}t          j        |t                     d| _        | j                            |||f           d S )NTzIn v4, passing bytes will no longer create a file field. Please explicitly use the filename parameter or pass a BytesIO object.r1   z,filename must be an instance of str. Got: %sr/   z0content_type must be an instance of str. Got: %s
zRNewline or carriage return detected in headers. Potential header injection attack.z=content_transfer_encoding must be an instance of str. Got: %szfcontent_transfer_encoding is deprecated. To maintain compatibility with v4 please pass a BytesPayload.)r    ioIOBaser   bytes	bytearray
memoryviewwarningswarnDeprecationWarningr   str	TypeErrorr   
ValueErrorr   CONTENT_TYPEr   append)	r&   r1   r2   r.   r/   r0   msgtype_optionsheaderss	            r'   	add_fieldzFormData.add_field-   s    eRY'' 		 !%Dy*=>> 	 Y  $=$Ec#5666'0&$'@'@
8S(A(AJXUVVV
5") < <%eT22H'/L$!%D#lC00 FU   |##t|';'; 9   *6GD%&!%D$07== ')BC  
P  M#1222!%D\7E:;;;;;r)   c                 B   t          |          }|r|                    d          }t          |t          j                  r't          |d          }|                     ||           nt          |t          t          f          r(|	                    |
                                           nmt          |t           t          f          r/t          |          dk    r|\  }}|                     ||           n"t          d                    |                    |
d S d S )Nr   unknown   zxOnly io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got {!r})r"   popr    r6   r7   r   rF   r	   r   extendr#   r$   lenr?   format)r&   r   to_addreckfps         r'   r%   zFormData.add_fieldsg   s   f 	**Q--C#ry)) "3	22q#&&&&C.)!<== ciikk****C$// 	CHHMM2q"%%%%  88>s    	 	 	 	 	r)   c                    g }| j         D ]#\  }}}|                    |d         |f           $| j        | j        nd}|dk    rd}nd|z  }t          j        t          |d|                                          |          S )Nr1   zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)doseqencoding)r.   )r   rB   r   r   BytesPayloadr   encode)r&   datarD   _r2   r   r.   s          r'   _gen_form_urlencodedzFormData._gen_form_urlencoded   s    &*l 	7 	7"L!UKKf-u56666#'=#<$--'g>LLJWTL#d$999@@BB%
 
 
 	
r)   c           
      @   | j         D ]\  }}}	 t          j        |v r.t          j        ||t          j                 || j                  }nt          j        ||| j                  }n8# t          $ r+}t          dt          |          d|d|          |d}~ww xY w|rC |j	        	 d	d| j
        i| |j        J |j                            t          j        d           | j                            |           | j                                          | j        S )
zAEncode a list of fields using the multipart/form-data MIME format)r.   rE   rT   )rE   rT   zCan not serialize value type: z
 headers: z	
 value: Nr   r   )r   )r   r   rA   r   get_payloadr   	Exceptionr?   typeset_content_dispositionr   rE   popallCONTENT_LENGTHr   append_payloadclear)r&   
dispparamsrE   r2   partexcs         r'   _gen_form_datazFormData._gen_form_data   sr   *., 	. 	.&J$//".%,T->%? '!%	  DD #.w  D    i15eggguuN    ?,, .2.@DN  
 |///##D$7>>>L''----|s   AA((
B2&BBc                 `    | j         r|                                 S |                                 S r+   )r   rf   rY   r,   s    r'   __call__zFormData.__call__   s1     	/&&(((,,...r)   )r   TN)__name__
__module____qualname____doc__r   r   boolr   r>   r(   propertyr-   rF   r%   r   rU   rY   r   r   rf   r   rh   r   r)   r'   r   r      s         !#!!%	! &+! ! !! ! #	! #! 
! ! ! !( "d " " " X" '+"&378< 8< 8<8< 8<
 sm8< 3-8< $,C=8< 
8< 8< 8< 8<t# $    0
g&: 
 
 
 
$!	 9 ! ! ! !F/' / / / / / /r)   r   )r6   r;   typingr   r   r   r   urllib.parser   	multidictr   r	    r   r   r   helpersr   r   __all__r   r   r)   r'   <module>ru      s    				  0 0 0 0 0 0 0 0 0 0 0 0 " " " " " " / / / / / / / / & & & & & & & & & & # # # # # #      
i/ i/ i/ i/ i/ i/ i/ i/ i/ i/r)   