U
    9Š]�  ã                   @   s  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 d dlmZ dddœZ	e	 
dd„ ed d	ƒD ƒ¡ e d
 dd„ e	 ¡ D ƒ¡¡ZG dd„ dƒZG dd„ deƒZG dd„ deƒZeeeje dœdd„Zeeejeef dœdd„Zeejeef edœdd„ZdS )é    N)ÚBytesIO)ÚPathz%22z\\)ú"ú\c                 C   s$   i | ]}|d krt |ƒd |¡“qS )é   z%{:02X})ÚchrÚformat©Ú.0Úc© r   úo/var/www/html/staging.mfahmagazine.net/magazine_api/magazine_env/lib/python3.8/site-packages/httpx/multipart.pyÚ
<dictcomp>   s       r   é    ú|c                 C   s   g | ]}t  |¡‘qS r   )ÚreÚescaper	   r   r   r   Ú
<listcomp>   s     r   c                   @   s(   e Zd Zedœdd„Zedœdd„ZdS )ÚField©Úreturnc                 C   s
   t ƒ ‚d S ©N©ÚNotImplementedError©Úselfr   r   r   Úrender_headers   s    zField.render_headersc                 C   s
   t ƒ ‚d S r   r   r   r   r   r   Úrender_data   s    zField.render_dataN)Ú__name__Ú
__module__Ú__qualname__Úbytesr   r   r   r   r   r   r      s   r   c                   @   sD   e Zd Zeejeef ddœdd„Zedœdd„Zedœdd	„Z	dS )
Ú	DataFieldN©ÚnameÚvaluer   c                 C   s8   t |tƒstdƒ‚t |ttfƒs(tdƒ‚|| _|| _d S )Nz$Invalid type for name. Expected str.z.Invalid type for value. Expected str or bytes.)Ú
isinstanceÚstrÚ	TypeErrorr!   r$   r%   ©r   r$   r%   r   r   r   Ú__init__   s    
zDataField.__init__r   c                 C   s   t d| jƒ}d d|dg¡S )Nr$   ó    ó    Content-Disposition: form-data; ó   

)Ú_format_paramr$   Újoin)r   r$   r   r   r   r   #   s    zDataField.render_headersc                 C   s   t | jtƒr| jS | j d¡S ©Nzutf-8)r&   r%   r!   Úencoder   r   r   r   r   '   s    ÿzDataField.render_data)
r   r   r    r'   ÚtypingÚUnionr!   r*   r   r   r   r   r   r   r"      s   r"   c                   @   sZ   e Zd Zeejejej ef ddœdd„Z	edœdd„Z
edœdd	„Zedœd
d„ZdS )Ú	FileFieldNr#   c                 C   sl   || _ t|tƒs6tt|ddƒƒj | _|| _|  ¡ | _n2|d | _|d | _t	|ƒdkr^|d n|  ¡ | _d S )Nr$   Úuploadr   é   é   )
r$   r&   Útupler   ÚgetattrÚfilenameÚfileÚguess_content_typeÚcontent_typeÚlenr)   r   r   r   r*   .   s    


ÿzFileField.__init__r   c                 C   s   t  | j¡d pdS )Nr   zapplication/octet-stream)Ú	mimetypesZ
guess_typer:   r   r   r   r   r<   =   s    zFileField.guess_content_typec              	   C   s:   t d| jƒ}t d| jƒ}| j ¡ }d d|d|d|dg¡S )Nr$   r:   r+   r,   s   ; s   
Content-Type: r-   )r.   r$   r:   r=   r1   r/   )r   r$   r:   r=   r   r   r   r   @   s    
ùÿzFileField.render_headersc                 C   s"   | j  ¡ }t|tƒr| d¡S |S r0   )r;   Úreadr&   r'   r1   )r   Úcontentr   r   r   r   P   s    
zFileField.render_data)r   r   r    r'   r2   r3   ZIOZAnyStrr8   r*   r<   r!   r   r   r   r   r   r   r4   -   s    þr4   )ÚdataÚfilesr   c                 c   sl   |   ¡ D ]>\}}t|ttfƒr8|D ]}t||d�V  q"qt||d�V  q|  ¡ D ]\}}t||d�V  qPd S )N)r$   r%   )Úitemsr&   ÚlistÚdictr"   r4   )rB   rC   r$   r%   Úitemr   r   r   Úiter_fieldsU   s    rH   c                 C   s‚   t ƒ }t t d¡¡}t| |ƒD ]8}| d| ¡ | | ¡ ¡ | | ¡ ¡ | d¡ q | d| ¡ d| 	d¡ }| 
¡ |fS )Né   s   --%s
s   
s   --%s--
z multipart/form-data; boundary=%sÚascii)r   ÚbinasciiÚhexlifyÚosÚurandomrH   Úwriter   r   ÚdecodeÚgetvalue)rB   rC   ÚbodyÚboundaryÚfieldr=   r   r   r   Úmultipart_encodea   s    rU   r#   c                 C   sH   t |tƒr| ¡ }tjt tdœdd„}t ||¡}| › d|› d� ¡ S )N)Úmatchr   c                 S   s   t |  d¡ S )Nr   )Ú!_HTML5_FORM_ENCODING_REPLACEMENTSÚgroup)rV   r   r   r   Úreplacerv   s    z_format_param.<locals>.replacerz="r   )	r&   r!   rP   r2   ÚMatchr'   Ú_HTML5_FORM_ENCODING_REÚsubr1   )r$   r%   rY   r   r   r   r.   r   s
    
r.   )rK   r?   rM   r   r2   Úior   Úpathlibr   rW   ÚupdateÚrangeÚcompiler/   Úkeysr[   r   r"   r4   rF   ÚIteratorrH   ZTupler!   r'   rU   r3   r.   r   r   r   r   Ú<module>   s&   
ÿÿ(