
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    'â7`À  ã                   @   s~   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„ dƒZdS )é    N)ÚAnyÚIterableÚListÚOptional)Ú	urlencode)Ú	MultiDictÚMultiDictProxyé   )ÚhdrsÚ	multipartÚpayload)Úguess_filename)ÚPayload)ÚFormDatac                   @   s¬   e Zd ZdZdee eee ddœdd„Z	e
edœd	d
„ƒZddddœeeee ee ee ddœdd„Zeddœdd„Zejdœdd„Zejdœdd„Zedœdd„ZdS )r   z_Helper class for multipart/form-data and
    application/x-www-form-urlencoded body generation.© TN)ÚfieldsÚquote_fieldsÚcharsetÚreturnc                 C   sd   t  d¡| _g | _d| _d| _|| _|| _t|t	ƒrBt
| ¡ ƒ}nt|t
tfƒsV|f}| j|Ž  d S )Nú	form-dataF)r   ÚMultipartWriterÚ_writerÚ_fieldsÚ_is_multipartÚ_is_processedÚ_quote_fieldsÚ_charsetÚ
isinstanceÚdictÚlistÚitemsÚtupleÚ
add_fields)Úselfr   r   r   r   r   úC/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/formdata.pyÚ__init__   s    
zFormData.__init__)r   c                 C   s   | j S ©N)r   ©r#   r   r   r$   Úis_multipart%   s    zFormData.is_multipart)Úcontent_typeÚfilenameÚcontent_transfer_encoding)ÚnameÚvaluer)   r*   r+   r   c                C   s  t |tjƒrd| _n$t |tttfƒr8|d kr8|d kr8|}td|iƒ}|d k	rbt |tƒsbt	d| ƒ‚|d kr€t |tjƒr€t
||ƒ}|d k	r–||d< d| _i }|d k	rÈt |tƒs¸t	d| ƒ‚||tj< d| _|d k	röt |tƒsæt	d| ƒ‚||tj< d| _| j |||f¡ d S )NTr,   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: %s)r   ÚioÚIOBaser   ÚbytesÚ	bytearrayÚ
memoryviewr   ÚstrÚ	TypeErrorr   r
   ÚCONTENT_TYPEZCONTENT_TRANSFER_ENCODINGr   Úappend)r#   r,   r-   r)   r*   r+   Útype_optionsÚheadersr   r   r$   Ú	add_field)   sB    
ÿ

ÿ

ÿÿ
zFormData.add_field)r   r   c                 G   sœ   t |ƒ}|r˜| d¡}t|tjƒr:t|dƒ}|  ||¡ qt|ttfƒrX| 	| 
¡ ¡ qt|t tfƒrˆt|ƒdkrˆ|\}}|  ||¡ qtd |¡ƒ‚q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   r.   r/   r   r9   r   r   Úextendr    r!   Úlenr4   Úformat)r#   r   Zto_addZrecÚkÚfpr   r   r$   r"   W   s     

þÿzFormData.add_fieldsc                 C   sn   g }| j D ]\}}}| |d |f¡ q
| jd k	r8| jnd}|dkrJd}nd| }tjt|d|d� ¡ |d�S )Nr,   zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)ÚdoseqÚencoding)r)   )r   r6   r   r   ÚBytesPayloadr   Úencode)r#   Údatar7   Ú_r-   r   r)   r   r   r$   Ú_gen_form_urlencodedo   s    þzFormData._gen_form_urlencodedc                 C   sè   | j rtdƒ‚| jD ]Æ\}}}z<tj|krFtj||tj || jd�}ntj||| jd�}W n: tk
r” } zt	dt
|ƒ||f ƒ|‚W 5 d}~X Y nX |rÎ|jd	d| ji|—Ž |jdk	s¾t‚|j tjd¡ | j |¡ qd| _ | jS )
zAEncode a list of fields using the multipart/form-data MIME formatz$Form data has been processed already)r)   r8   rC   )r8   rC   z8Can not serialize value type: %r
 headers: %r
 value: %rNr   r   T)r   )r   ÚRuntimeErrorr   r
   r5   r   Úget_payloadr   Ú	Exceptionr4   ÚtypeZset_content_dispositionr   r8   ÚAssertionErrorZpopallZCONTENT_LENGTHr   Zappend_payload)r#   Z
dispparamsr8   r-   ÚpartÚexcr   r   r$   Ú_gen_form_data�   sJ    
ü  ÿ
ÿÿý ÿÿÿzFormData._gen_form_datac                 C   s   | j r|  ¡ S |  ¡ S d S r&   )r   rP   rH   r'   r   r   r$   Ú__call__¦   s    zFormData.__call__)r   TN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úboolr   r3   r%   Úpropertyr(   r9   r"   r   rD   rH   r   r   rP   r   rQ   r   r   r   r$   r      s6      üûùø.%r   )r.   Útypingr   r   r   r   Úurllib.parser   Z	multidictr   r   Ú r
   r   r   Zhelpersr   r   Ú__all__r   r   r   r   r$   Ú<module>   s   