
    &=d                        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          Z
 G d de
          Z G d	 d
e
          Z G d de
          Z ed           ed           e
d           e
d           e             e
dd           ed           ed           edd           edd           edd           edd           edd          dZg dZd Zd Zd ZdS )    N   )
BadMessagei c                   &    e Zd ZddZd Zg fdZdS )MuaTc                 `    || _         |                                d         | _        || _        d S )Nr   )_commandsplit
executableneeds_terminal)selfcommandr   s      2/usr/lib/python3/dist-packages/reportbug/mailer.py__init__zMua.__init__&   s+    !--//!,,    c                 ~    t           j                            |          ot          j        |t           j                  S )N)ospathisfileaccessR_OK)r   afiles     r   _check_attachablezMua._check_attachable+   s)    w~~e$$B5"')B)BBr   c                 T    | j         }d|vr|dz  }|t          j        |          z  }|S )N%s %s)r   shlexquote)r   filenameattachmentscmds       r   get_send_commandzMua.get_send_command.   s4    ms??5LCEK)))
r   N)T)__name__
__module____qualname__r   r   r!    r   r   r   r   %   sS        - - - -
C C C 68      r   r   c                       e Zd Zg fdZdS )Muttc                       j         }d|vr|dz  }|t          j        |          z  }|r+ fd|D             }|r|dd                    |          z   z  }|S )Nr   r   c                     g | ]H}                     |          t          j        t          j                            |                    IS r%   )r   r   r   r   r   abspath.0ar   s     r   
<listcomp>z)Mutt.get_send_command.<locals>.<listcomp>=   sZ     F F F4+A+A!+D+DF5;rwq1122 F F Fr   z -a  )r   r   r   join)r   r   r   r    atts   `    r   r!   zMutt.get_send_command7   s    ms??5LCEK))) 	.F F F F'F F FC .v--
r   N)r"   r#   r$   r!   r%   r   r   r'   r'   6   s+        57 
 
 
 
 
 
r   r'   c                       e Zd Zd Zg fdZdS )Gnusc                 "    d| _         d| _        d S )NemacsclientT)r
   r   )r   s    r   r   zGnus.__init__E   s    '"r   c                 t    d}t          j        dd|          }t          j        ||z            }d|d|}|S )Nz(progn
                      (load-file "/usr/share/reportbug/reportbug.el")
                      (tfheen-reportbug-insert-template "%s"))z["\\]z\\\g<0>zemacsclient --no-wait --eval z 2>/dev/null || emacs --eval )resubr   r   )r   r   r   elispr    s        r   r!   zGnus.get_send_commandI   sN    B 6*lH==EH,--RWRWRWY^Y^_
r   N)r"   r#   r$   r   r!   r%   r   r   r3   r3   D   s<        # # # 68      r   r3   c                   .    e Zd Zd Zd Zg fdZg fdZdS )Mailtoc                 F    t           j                            |dd          S )N/replace)safeerrors)urllibparser   )r   inss     r   _uqz
Mailto._uqT   s    |!!#C	!BBBr   c                     d}||         }|rP|                      d                    |                                                    }d                    ||          }|S )N z{}={}&)rD   r0   
splitlinesformat)r   hdrmsgparmstrhdcontents         r   _get_headerparamzMailto._get_headerparamW   sU    X 	4hhrwwr}}7788Gooc733Gr   c                     d}|                      d                    |d                                                             z  }|dz  }dD ]}|                     ||          z  }|                                r|                    d          S |r( fd|D             }|r|d                    |          z  }|                    d	                              d
          }|r|dz                         |          z   }t          |          t          k    rS|d d         }|st          d          |dz  }|dz                         |          z   }t          |          t          k    S|}|                    d          S )Nzmailto:rF   to?)subjectccbccz?&c           	          g | ]\}                     |          d                                         t          j                            |                              ]S )z
attach={}&)r   rH   rD   r   r   r*   r+   s     r   r.   z)Mailto._msg_to_mailto.<locals>.<listcomp>m   sj     M M M$2H2H2K2KM,--dhhrwq7I7I.J.JKK M M Mr   T)decoder>   )r@   zbody=i0zunreasonable messagez;

[ MAILBODY EXCEEDED REASONABLE LENGTH, OUTPUT TRUNCATED ])rD   r0   rG   rN   is_multipartrstripget_payloadrV   lenMAX_ARG_LENGTHr   )r   rJ   r   mailtorI   
attstrlistbody
try_mailtos   `       r   _msg_to_mailtozMailto._msg_to_mailtoa   s   $((2773t9#7#7#9#9::;;;#+ 	6 	6Cd++C555FF 	'==&&& 	.M M M M#.M M MJ ."''*---d++22)2DD 		 ')DHHTNN:Jj//N22FUF| =$%;<<<WW#g->
 j//N22  F}}T"""r   c                     t          |d          5 }t          j        |t          j        j                  }d d d            n# 1 swxY w Y   d                    | j        |                     ||                    }|S )Nr)policyz{} "{}")openemailmessage_from_filerc   compat32rH   r
   r`   )r   r   r   fpmessager    s         r   r!   zMailto.get_send_command   s    (C   	PB-b9NOOOG	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P t0C0CG[0Y0YZZ
s   &AA
AN)r"   r#   r$   rD   rN   r`   r!   r%   r   r   r;   r;   S   sg        C C C   /1 # # # #> 68      r   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)muttneomuttmhnmhgnus
claws-mailalpinepinerj   rk   thunderbirdsylpheedrl   )rr   rj   rk   ru   rv   c                 j    t          | t                    s| t                                          v rdS dS )z
    Check if the mua is supported by reportbug

    Parameters
    ----------
    mua : Mua instance or str
        mail user agent

    Returns
    -------
    bool
        True if supported, otherwise False
    TF)
isinstancer   MUAkeysmuas    r   mua_is_supportedr}      s2     #s schhjj00t5r   c                     t          | t                    s 	 t          |          } n# t          $ r Y dS w xY wt	          j        | j                  rdS dS )z
    Check if the mua is available on the system

    Parameters
    ----------
    mua : Mua instance or str
        mail user agent

    Returns
    -------
    bool
        True if available, otherwise False
    FT)rx   r   ry   KeyErrorshutilwhichr
   r{   s    r   
mua_existsr      sf     c3 	c(CC 	 	 	55	|CN## t5s   % 
33c                     dt           j        v sdt           j        v rdS t          | t                    r| j        } | t
          v rdS | dk    rdt           j        vrdS dS )a2  
    Check if the mua can run in the current environment

    Some MUAs need a graphical environment and cannot run on a text
    console.

    Parameters
    ----------
    mua : Mua instance or str
        mail user agent

    Returns
    -------
    bool
        True if it can run, otherwise False
    DISPLAYWAYLAND_DISPLAYTFrl   MAILER)r   environrx   r   r
   MUA_NEEDS_DISPLAYr{   s    r   mua_can_runr      sn    " 	RZ BJ..t#s n
u
khbj88u4r   )re   email.policyr   r7   r   r   rA   
exceptionsr   r[   r   r'   r3   r;   ry   r   r}   r   r   r%   r   r   <module>r      s&  0      				 				    " " " " " "        "    3       3   2 2 2 2 2S 2 2 2l DOOtL!!
#+
,
,3,--DFF#6uMMMf]##F;E:::VGE22260GGG+EBBBE:::       &  0    r   