509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \°)  ã               @   s:  d dl Z d dlZd dlZd dlZd dlmZ G dd„ dƒZeƒ Zd%dd„Zej	deƒ d	d
„ Z
xdjƒ D ]Zej	ee
ƒ qhW dd„ Zx djƒ D ]Zej	de eƒ qŽW dd„ Zej	deƒ dd„ Zdd„ Zdd„ Zdd„ Zd&dd„Zejeeƒ d'd d!„Zejejjeƒ d(d#d$„Zx eeefD ]Zejeeƒ �q W dS ))é    N)Ú
quoprimimec               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚContentManagerc             C   s   i | _ i | _d S )N)Úget_handlersÚset_handlers)Úself© r   ú,/usr/lib64/python3.6/email/contentmanager.pyÚ__init__	   s    zContentManager.__init__c             C   s   || j |< d S )N)r   )r   ÚkeyÚhandlerr   r   r   Úadd_get_handler   s    zContentManager.add_get_handlerc             O   s|   |j ƒ }|| jkr(| j| |f|ž|ŽS |jƒ }|| jkrP| j| |f|ž|ŽS d| jkrp| jd |f|ž|ŽS t|ƒ‚d S )NÚ )Zget_content_typer   Úget_content_maintypeÚKeyError)r   ÚmsgÚargsÚkwZcontent_typeÚmaintyper   r   r   Úget_content   s    


zContentManager.get_contentc             C   s   || j |< d S )N)r   )r   Ztypekeyr   r   r   r   Úadd_set_handler   s    zContentManager.add_set_handlerc             O   s>   |j ƒ dkrtdƒ‚| j||ƒ}|jƒ  |||f|ž|Ž d S )NZ	multipartz"set_content not valid on multipart)r   Ú	TypeErrorÚ_find_set_handlerZclear_content)r   r   Úobjr   r   r   r   r   r   Úset_content   s
    zContentManager.set_contentc       	      C   sÂ   d }xœt |ƒjD ]Ž}|| jkr(| j| S |j}t|ddƒ}|rLdj||fƒn|}|d kr\|}|| jkrp| j| S || jkr„| j| S |j}|| jkr| j| S qW d | jkr¶| jd  S t|ƒ‚d S )NÚ
__module__r   Ú.)ÚtypeÚ__mro__r   Ú__qualname__ÚgetattrÚjoinÚ__name__r   )	r   r   r   Zfull_path_for_errorÚtypZqnameÚmodnameÚ	full_pathÚnamer   r   r   r   '   s&    








z ContentManager._find_set_handlerN)	r!   r   r   r	   r   r   r   r   r   r   r   r   r   r      s   	r   Úreplacec             C   s&   | j dd�}| jddƒ}|j||d�S )NT)ÚdecodeÚcharsetÚASCII)Úerrors)Úget_payloadZ	get_paramr'   )r   r*   Zcontentr(   r   r   r   Úget_text_content@   s    r,   Útextc             C   s   | j dd�S )NT)r'   )r+   )r   r   r   r   Úget_non_text_contentG   s    r.   zaudio image video applicationc             C   s
   | j dƒS )Nr   )r+   )r   r   r   r   Úget_message_contentM   s    r/   zrfc822 external-bodyzmessage/c             C   s   t | jdƒƒS )Nr   )Úbytesr+   )r   r   r   r   Ú%get_and_fixup_unknown_message_contentS   s    r1   Úmessagec                s®   dj ||fƒ| d< |rªt|d dƒs<| j‰ ‡ fdd„|D ƒ}y,x&|D ]}|jrX|jd ‚|| |j< qDW W n@ tjjk
r¨ } z tdj	|j
| jd�ƒƒ|‚W Y d d }~X nX d S )	Nú/zContent-Typer   r%   c                s   g | ]}ˆ j ˆ j|gƒŽ ‘qS r   )Zheader_factoryZheader_source_parse)Ú.0Úheader)Úmpr   r   ú
<listcomp>d   s   z _prepare_set.<locals>.<listcomp>zInvalid header: {})Úpolicy)r    Úhasattrr8   Zdefectsr%   Úemailr*   ZHeaderDefectÚ
ValueErrorÚformatZfold)r   r   ÚsubtypeÚheadersr5   Úexcr   )r6   r   Ú_prepare_set_   s    


r@   c             C   s|   |d kr|d k	rd}|d k	r$|| d< |d k	r>| j d|ddd� |d k	rN|| d< |d k	rxx |jƒ D ]\}}| j ||ƒ q`W d S )NZ
attachmentzContent-DispositionÚfilenameT)r5   r&   z
Content-ID)Ú	set_paramÚitems)r   ÚdispositionrA   ÚcidÚparamsr
   Úvaluer   r   r   Ú_finalize_setp   s    rH   c             C   sZ   g }|d d }x>t dt| ƒ|ƒD ]*}| ||| … }|jtj|ƒjdƒƒ q"W dj|ƒS )Né   é   r   Úasciir   )ÚrangeÚlenÚappendÚbinasciiÚ
b2a_base64r'   r    )ÚdataÚmax_line_lengthZencoded_linesZunencoded_bytes_per_lineÚiZthisliner   r   r   Ú_encode_base64…   s    rT   c                s|  | j |ƒjƒ }|jj dƒ‰ ‡ fdd„}dd„ }|d krðyd||ƒjdƒfS  tk
r\   Y nX |jdkr”tdd	„ |D ƒƒ|jkr”d||ƒjdd
ƒfS ||d d… ƒ}tj	|jdƒ|jƒ}t
j|ƒ}	t|ƒt|	ƒkrØd}nd}t|ƒdkrð||fS |dk�r
||ƒjdƒ}
nj|dk�r&||ƒjdd
ƒ}
nN|dk�rJtj	||ƒjdƒ|jƒ}
n*|dk�rft||ƒ|jƒ}
ntdj|ƒƒ‚||
fS )NrK   c                s   ˆ j | ƒˆ  S )N)r    )Úlines)Úlinesepr   r   Úembedded_body‘   s    z#_encode_text.<locals>.embedded_bodyc             S   s   dj | ƒd S )Nó   
)r    )rU   r   r   r   Únormal_body’   s    z!_encode_text.<locals>.normal_bodyÚ7bitÚ8bitc             s   s   | ]}t |ƒV  qd S )N)rM   )r4   Úxr   r   r   ú	<genexpr>š   s    z_encode_text.<locals>.<genexpr>Úsurrogateescapeé
   zlatin-1Úbase64zquoted-printablez$Unknown content transfer encoding {})ÚencodeÚ
splitlinesrV   r'   ÚUnicodeDecodeErrorZcte_typeÚmaxrR   r   Zbody_encoderO   rP   rM   rT   r;   r<   )Ústringr(   Úcter8   rU   rW   rY   ZsniffZsniff_qpZsniff_base64rQ   r   )rV   r   Ú_encode_textŽ   s@    






rg   Úplainúutf-8c
             C   sd   t | d||	ƒ t|||| jƒ\}}
| j|
ƒ | jdtjjj||ƒdd� || d< t	| ||||ƒ d S )Nr-   r(   T)r&   zContent-Transfer-Encoding)
r@   rg   r8   Úset_payloadrB   r:   r(   ZALIASESÚgetrH   )r   re   r=   r(   rf   rD   rA   rE   rF   r>   Zpayloadr   r   r   Úset_text_contentµ   s    
rl   Úrfc822c	       	      C   s¦   |dkrt dƒ‚|dkr@|dkr.t dj|ƒƒ‚|d kr:dn|}n0|dkrd|dkr^t d	j|ƒƒ‚d}n|d krpd}t| d
||ƒ | j|gƒ || d< t| ||||ƒ d S )NÚpartialz4message/partial is not supported for Message objectsrm   rZ   r[   Úbinaryz*message/rfc822 parts do not support cte={}zexternal-bodyz1message/external-body parts do not support cte={}r2   zContent-Transfer-Encoding)NrZ   r[   ro   )NrZ   )r;   r<   r@   rj   rH   )	r   r2   r=   rf   rD   rA   rE   rF   r>   r   r   r   Úset_message_contentÃ   s$    rp   r`   c
       
      C   sœ   t | |||	ƒ |dkr(t|| jjd�}nN|dkrNtj|dddd�}|jdƒ}n(|dkrb|jdƒ n|dkrv|jddƒ}| j|ƒ || d< t	| ||||ƒ d S )Nr`   )rR   zquoted-printableFT)Úistextr5   Z	quotetabsrK   rZ   r[   ro   r^   zContent-Transfer-Encoding)r[   ro   )
r@   rT   r8   rR   rO   Zb2a_qpr'   ra   rj   rH   )
r   rQ   r   r=   rf   rD   rA   rE   rF   r>   r   r   r   Úset_bytes_contentä   s    
rr   )r&   )rh   ri   NNNNNN)rm   NNNNNN)r`   NNNNN)rO   Zemail.charsetr:   Zemail.messageZemail.errorsr   r   Zraw_data_managerr,   r   r.   Úsplitr   r/   r=   r1   r@   rH   rT   rg   rl   r   Ústrrp   r2   ZMessagerr   r0   Ú	bytearrayÚ
memoryviewr"   r   r   r   r   Ú<module>   sD   6
	'  
	  
  
