a
    K56a[                     @   s  d dl Z d dlZ 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Z	G dd dZ
G dd de
ZG d	d
 d
e
ZG dd de
Zedede
de
de e
dddedededddedddedddedddeddddZg dZdd Zdd Zd d! ZdS )"    N   )
BadMessagei c                   @   s*   e Zd Zd	ddZdd Zg fddZdS )
MuaTc                 C   s   || _ | d | _|| _d S )Nr   )_commandsplit
executableneeds_terminal)selfZcommandr    r
   2/usr/lib/python3/dist-packages/reportbug/mailer.py__init__&   s    zMua.__init__c                 C   s   t j|ot |t jS )N)ospathisfileaccessR_OK)r	   Zafiler
   r
   r   _check_attachable+   s    zMua._check_attachablec                 C   s(   | j }d|vr|d7 }|t| }|S )N%s %s)r   shlexquote)r	   filenameattachmentscmdr
   r
   r   get_send_command.   s
    zMua.get_send_commandN)T)__name__
__module____qualname__r   r   r   r
   r
   r
   r   r   %   s   
r   c                   @   s   e Zd Zg fddZdS )Muttc                    sT    j }d|vr|d7 }|t| }|rP fdd|D }|rP|dd| 7 }|S )Nr   r   c                    s(   g | ] }  |rttj|qS r
   )r   r   r   r   r   abspath.0ar	   r
   r   
<listcomp>=   s   
z)Mutt.get_send_command.<locals>.<listcomp>z -a  )r   r   r   join)r	   r   r   r   Zattr
   r#   r   r   7   s    zMutt.get_send_commandN)r   r   r   r   r
   r
   r
   r   r   6   s   r   c                   @   s    e Zd Zdd Zg fddZdS )Gnusc                 C   s   d| _ d| _d S )NZemacsclientT)r   r   r#   r
   r
   r   r   E   s    zGnus.__init__c                 C   s0   d}t dd|}t|| }d||f }|S )Nz(progn
                      (load-file "/usr/share/reportbug/reportbug.el")
                      (tfheen-reportbug-insert-template "%s"))z["\\]z\\\g<0>z>emacsclient --no-wait --eval %s 2>/dev/null || emacs --eval %s)resubr   r   )r	   r   r   Zelispr   r
   r
   r   r   I   s
    zGnus.get_send_commandN)r   r   r   r   r   r
   r
   r
   r   r'   D   s   r'   c                   @   s4   e Zd Zdd Zdd Zg fddZg fddZd	S )
Mailtoc                 C   s   t jj|dddS )N/replace)Zsafeerrors)urllibparser   )r	   Zinsr
   r
   r   _uqT   s    z
Mailto._uqc                 C   s4   d}|| }|r0|  d| }d||}|S )N z{}={}&)r0   r&   
splitlinesformat)r	   hdrmsgZparmstrZhdZcontentr
   r
   r   _get_headerparamW   s    zMailto._get_headerparamc                    s   d}|  d|d  7 }|d7 }dD ]}| ||7 }q,| rT|dS |r| fdd|D }|r||d|7 }|jd	d
jdd}|r|d   | }t|t	kr|d d }|st
d|d7 }|d   | }q|}|dS )Nzmailto:r1   to?)ZsubjectZccZbccz?&c              	      s.   g | ]&}  |rd  tj|qS )z
attach={}&)r   r3   r0   r   r   r   r    r#   r
   r   r$   m   s   z)Mailto._msg_to_mailto.<locals>.<listcomp>T)decoder,   )r-   zbody=i0zunreasonable messagez;

[ MAILBODY EXCEEDED REASONABLE LENGTH, OUTPUT TRUNCATED ])r0   r&   r2   r6   Zis_multipartrstripZget_payloadr9   lenMAX_ARG_LENGTHr   )r	   r5   r   Zmailtor4   Z
attstrlistbodyZ
try_mailtor
   r#   r   _msg_to_mailtoa   s0    

zMailto._msg_to_mailtoc                 C   sV   t |d"}tj|tjjd}W d    n1 s20    Y  d| j| ||}|S )Nr)policyz{} "{}")openemailZmessage_from_filer@   Zcompat32r3   r   r>   )r	   r   r   fpmessager   r
   r
   r   r      s    0zMailto.get_send_commandN)r   r   r   r0   r6   r>   r   r
   r
   r
   r   r*   S   s   
r*   zmutt -Hz
neomutt -Hz/usr/bin/mh/comp -use -filezclaws-mail --compose-from-fileF)r   zalpine -urlz	pine -url	evolutionkmailzthunderbird -composezsylpheed --compose	xdg-email)ZmuttZneomuttZmhZnmhZgnus
claws-mailZalpineZpinerE   rF   thunderbirdsylpheedrG   )rH   rE   rF   rI   rJ   c                 C   s   t | ts| t v rdS dS )NTF)
isinstancer   MUAkeysZmuar
   r
   r   mua_is_supported   s    rO   c                 C   s@   t | ts,zt|  } W n ty*   Y dS 0 t| jr<dS dS )NFT)rK   r   rL   KeyErrorshutilZwhichr   rN   r
   r
   r   
mua_exists   s    
rR   c                 C   sN   dt jv sdt jv rdS t| tr(| j} | tv r4dS | dkrJdt jvrJdS dS )NZDISPLAYZWAYLAND_DISPLAYTFrG   ZMAILER)r   environrK   r   r   MUA_NEEDS_DISPLAYrN   r
   r
   r   mua_can_run   s    

rU   )rB   Zemail.policyr   r(   r   rQ   r.   
exceptionsr   r<   r   r   r'   r*   rL   rT   rO   rR   rU   r
   r
   r
   r   <module>   s<   6





	