
    F/jr                         d dl Z d dlZd dlmZ d dl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d
lmZ dZ G d d      Zy)    N)Iterable)Any)	urlencode)	MultiDictMultiDictProxy   )hdrs	multipartpayload)guess_filename)_safe_header)Payload)FormDatac                       e Zd ZdZ	 	 	 ddddee   dededz  ded	df
d
Ze	d	efd       Z
dddddedededz  dedz  dedz  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y)r   ztHelper class for form body generation.

    Supports multipart/form-data and application/x-www-form-urlencoded.
    NF)default_to_multipartfieldsquote_fieldscharsetr   returnc                   t        j                  d      | _        g | _        || _        || _        || _        t        |t              rt        |j                               }nt        |t        t        f      s|f} | j                  |  y )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/maxservice/venv/lib/python3.12/site-packages/aiohttp/formdata.py__init__zFormData.__init__   sq     !00="$1)fd#&,,.)FFT5M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-   r.   c                   t        |t        j                        rd| _        n=t        |t        t
        t        f      r"d}||t        j                  |t               |}t        |       t        d|i      }|t        |t              st        d|z        |&t        |t        j                        rt        ||      }|t        |       ||d<   d| _        i }|Ct        |t              st        d|z        t        |       ||t        j                   <   d| _        |At        |t              st        d|z        d}t        j                  |t               d| _        | j"                  j%                  |||f       y )	NTzIn v4, passing bytes will no longer create a file field. Please explicitly use the filename parameter or pass a BytesIO object.r/   z,filename must be an instance of str. Got: %sr-   z0content_type must be an instance of str. Got: %sz=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   r   str	TypeErrorr   r	   CONTENT_TYPEr   append)	r$   r/   r0   r,   r-   r.   msgtype_optionsheaderss	            r%   	add_fieldzFormData.add_field/   s    eRYY'!%Dy*=>Y  $=$Ec#56T'0&$'@
8S(AJXUVV
5")) <%eT2H"'/L$!%D#lC0FU  &)5GD%%&!%D$07=')BC 
P  MM#12!%D\7E:;r'   c                    t        |      }|r|j                  d      }t        |t        j                        rt        |d      }| j                  ||       nt        |t        t        f      r |j                  |j                                nJt        |t         t        f      r&t        |      dk(  r|\  }}| j                  ||       nt        d|      |ry y )Nr   unknown   ztOnly io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got )r    popr   r2   r3   r   rA   r   r   extendr!   r"   lenr;   )r$   r   to_addreckfps         r%   r#   zFormData.add_fieldsg   s    f**Q-C#ryy)"3	2q#&C.)!<=ciik*C$/CHM2q"%  4477<  r'   c                    g }| j                   D ]  \  }}}|j                  |d   |f        | j                  | j                  nd}|dk(  rd}nd|z  }t        j                  t        |d|      j                         |      S )Nr/   zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)doseqencoding)r,   )r   r=   r   r   BytesPayloadr   encode)r$   datar?   _r0   r   r,   s          r%   _gen_form_urlencodedzFormData._gen_form_urlencoded   s    &*ll 	7"L!UKKf-u56	7 $(==#<$--'g>LJWTL##d$9@@B%
 	
r'   c           
         | j                   D ]  \  }}}	 t        j                  |v r5t        j                  ||t        j                     || j
                        }n"t        j                  ||| j
                        }|rW |j                  	 dd| j                  i| |j                  J |j                  j                  t        j                  d       | j                  j                  |        | j                   j!                          | j                  S # t        $ r#}t        dt        |      d|d|      |d}~ww xY w)	zAEncode a list of fields using the multipart/form-data MIME format)r,   r@   rN   )r@   rN   zCan not serialize value type: z
 headers: z	
 value: Nr   )r   )r   r	   r<   r   get_payloadr   	Exceptionr;   typeset_content_dispositionr   r@   popallCONTENT_LENGTHr   append_payloadclear)r$   
dispparamsr@   r0   partexcs         r%   _gen_form_datazFormData._gen_form_data   s4   *.,, 	.&J$$/"..%,T->->%? '!%	D #..wD ,,,.2.@.@DN
 ||///##D$7$7>LL''-9	.< 	||%  15eguN s   A)D	E#EEc                 Z    | j                   r| j                         S | j                         S r)   )r   r`   rS   r*   s    r%   __call__zFormData.__call__   s)    &&((,,..r'   ) TN)__name__
__module____qualname____doc__r   r   boolr:   r&   propertyr+   rA   r#   r   rO   rS   r
   r   r`   r   rb   rc   r'   r%   r   r      s    !#!"	! &+!! ! t	! #! 
!( "d " " $(#046<6< 6<
 Dj6< *6< $':6< 
6<p# $ 0
g&:&: 
$!	 9 9 !F/' /r'   r   )r2   r7   collections.abcr   typingr   urllib.parser   	multidictr   r    r	   r
   r   helpersr   http_writerr   r   __all__r   rc   r'   r%   <module>rr      s7    	  $  " / & & # % 
g/ g/r'   