§
    Étºf�%  ã                   ót  — d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlmZmZmZ  G d	„ d
ej        ¦  «        Z eej        ¦  «         G d„ dej        ¦  «        ¦   «         Z G d„ dej        ej        ¦  «        ZeddœZ eej        ¦  «         G d„ dej        ¦  «        ¦   «         ZdS )z2
L{twisted.words} support for Instance Messenger.
é    )Úimplementer)ÚdeferÚerror)Úlog)ÚFailure)Úpb)ÚbasesupportÚ
interfaces)ÚAWAYÚOFFLINEÚONLINEc                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTwistedWordsPersonzHI a facade for a person you can talk to through a twisted.words service.c                 ó`   — t           j                             | ||¦  «         t          | _        d S ©N)r	   ÚAbstractPersonÚ__init__r   Ústatus)ÚselfÚnameÚwordsAccounts      úY/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/words/im/pbsupport.pyr   zTwistedWordsPerson.__init__   s(   € ÝÔ"×+Ò+¨D°$¸ÑEÔEÐEÝˆŒˆˆó    c                 óB   — | j         t          k    p| j         t          k    S r   )r   r   r   ©r   s    r   ÚisOnlinezTwistedWordsPerson.isOnline   s   € Ø”�vÒ%Ð?¨4¬;½$Ò+>Ð?r   c                 ó   — | j         S r   )r   r   s    r   Ú	getStatuszTwistedWordsPerson.getStatus   s
   € ØŒ{Ðr   c                 óò   — |rK| j         j        j                             | j        ||¦  «        }|                     | j        d|z   ¦  «         |S | j         j        j                             d| j        |¦  «        S )zReturn a deferred...ú* ÚdirectMessage)ÚaccountÚclientÚperspectiver!   r   Ú
addErrbackÚmetadataFailedÚ
callRemote©r   ÚtextÚmetadataÚds       r   ÚsendMessagezTwistedWordsPerson.sendMessage!   st   € àð 	Ø”Ô#Ô/×=Ò=¸d¼iÈÈxÑXÔXˆAØ�LŠL˜Ô,¨d°T©kÑ:Ô:Ð:ØˆHà”<Ô&Ô2×=Ò=Ø ¤¨Dñô ð r   c                 óz   — t          d|d|¦  «         | j        j        j                             | j        |¦  «        S )Núresult:útext:)Úprintr"   r#   r$   r!   r   ©r   Úresultr)   s      r   r&   z!TwistedWordsPerson.metadataFailed,   s6   € Ýˆi˜ ¨$Ñ/Ô/Ð/ØŒ|Ô"Ô.×<Ò<¸T¼YÈÑMÔMÐMr   c                 ól   — || _         | j                             ¦   «                              | ¦  «         d S r   )r   ÚchatÚgetContactsListÚsetContactStatus)r   r   s     r   Ú	setStatuszTwistedWordsPerson.setStatus0   s1   € ØˆŒØŒ	×!Ò!Ñ#Ô#×4Ò4°TÑ:Ô:Ð:Ð:Ð:r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r,   r&   r7   © r   r   r   r      sz   € € € € € ØRÐRðð ð ð@ð @ð @ðð ð ð	ð 	ð 	ðNð Nð Nð;ð ;ð ;ð ;ð ;r   r   c                   ó:   — e Zd Zd„ Zd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )
ÚTwistedWordsGroupc                 óV   — t           j                             | ||¦  «         d| _        d S ©Nr   )r	   ÚAbstractGroupr   Újoined)r   r   ÚwordsClients      r   r   zTwistedWordsGroup.__init__7   s(   € ÝÔ!×*Ò*¨4°°{ÑCÔCÐCØˆŒˆˆr   Nc                 óô   — |rL| j         j        j                             d| j        ||¦  «        }|                     | j        d|z   ¦  «         |S | j         j        j                             d| j        |¦  «        S )zReturn a deferred.ÚgroupMessager    )r"   r#   r$   r'   r   r%   r&   r(   s       r   ÚsendGroupMessagez"TwistedWordsGroup.sendGroupMessage;   s   € ð ð 		Ø”Ô#Ô/×:Ò:Ø ¤	¨4°ñô ˆAð �LŠL˜Ô,¨d°T©kÑ:Ô:Ð:ØˆHà”<Ô&Ô2×=Ò=Ø ¤	¨4ñô ð r   c                 óv   — | j         j        j                             d|| j        j        dœ| j        ¦  «         d S )NÚsetGroupMetadata)ÚtopicÚtopic_author©r"   r#   r$   r'   r   )r   r)   s     r   ÚsetTopiczTwistedWordsGroup.setTopicI   sD   € ØŒÔÔ'×2Ò2ØØ¨D¬KÔ,<Ð=Ð=ØŒIñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó|   — t          d|d|¦  «         | j        j        j                             d| j        |¦  «        S )Nr.   r/   rE   )r0   r"   r#   r$   r'   r   r1   s      r   r&   z TwistedWordsGroup.metadataFailedP   s?   € Ýˆi˜ ¨$Ñ/Ô/Ð/ØŒ|Ô"Ô.×9Ò9Ø˜DœI tñ
ô 
ð 	
r   c                 ó   — d| _         d S )Né   ©rB   r   s    r   ÚjoiningzTwistedWordsGroup.joiningV   ó   € ØˆŒˆˆr   c                 ó   — d| _         d S r@   rP   r   s    r   ÚleavingzTwistedWordsGroup.leavingY   rR   r   c                 óV   — | j         j        j                             d| j        ¦  «        S ©NÚ
leaveGrouprK   r   s    r   ÚleavezTwistedWordsGroup.leave\   s"   € ØŒ|Ô"Ô.×9Ò9¸,ÈÌ	ÑRÔRÐRr   r   )
r8   r9   r:   r   rF   rL   r&   rQ   rT   rX   r<   r   r   r>   r>   5   s‡   € € € € € ðð ð ðð ð ð ð
ð 
ð 
ð
ð 
ð 
ðð ð ðð ð ðSð Sð Sð Sð Sr   r>   c                   ó„   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	dd	„Z
d
„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTwistedWordsClientz�In some cases, this acts as an Account, since it a source of text
    messages (multiple Words instances may be on a single PB connection)
    Nc                 ó¢   — d                      |j        ||¦  «        | _        || _        t          d||¦  «         || _        || _        || _        d S )Nz
{} ({}:{})zHELLO I AM A PB SERVICE)ÚformatÚaccountNamer   r0   r4   r"   Ú_logonDeferred)r   ÚacctÚserviceNameÚperspectiveNameÚchatuir^   s         r   r   zTwistedWordsClient.__init__e   s^   € Ø'×.Ò.ØÔØØñ
ô 
ˆÔð
 $ˆŒ	ÝÐ'¨°oÑFÔFÐFØˆŒ	ØˆŒØ,ˆÔÐÐr   c                 ó8   — | j                              || ¦  «        S r   )r4   Ú	getPerson©r   r   s     r   rd   zTwistedWordsClient.getPersonq   s   € ØŒy×"Ò" 4¨Ñ.Ô.Ð.r   c                 ó8   — | j                              || ¦  «        S r   )r4   ÚgetGroupre   s     r   rg   zTwistedWordsClient.getGroupt   s   € ØŒy×!Ò! $¨Ñ-Ô-Ð-r   c                 ó\   — | j                              |                      |¦  «        ¦  «        S r   )r4   ÚgetGroupConversationrg   re   s     r   ri   z'TwistedWordsClient.getGroupConversationw   s$   € ØŒy×-Ò-¨d¯mªm¸DÑ.AÔ.AÑBÔBÐBr   c                 ó<   — | j                              d|¦  «         d S )NÚ
addContact)r$   r'   re   s     r   rk   zTwistedWordsClient.addContactz   s!   € ØÔ×#Ò# L°$Ñ7Ô7Ð7Ð7Ð7r   c                 óx   — t          d||¦  «         |                      |¦  «                             |¦  «         d S )Nzreceived group members:)r0   ri   ÚsetGroupMembers)r   ÚnamesÚgroups      r   Úremote_receiveGroupMembersz-TwistedWordsClient.remote_receiveGroupMembers}   s=   € ÝÐ'¨°Ñ6Ô6Ð6Ø×!Ò! %Ñ(Ô(×8Ò8¸Ñ?Ô?Ð?Ð?Ð?r   c                 ó€   — t          d||||¦  «         |                      |¦  «                             |||¦  «         d S )Nzreceived a group message)r0   ri   ÚshowGroupMessage)r   Úsenderro   Úmessager*   s        r   Úremote_receiveGroupMessagez-TwistedWordsClient.remote_receiveGroupMessage�   sE   € ÝÐ(¨&°%¸À(ÑKÔKÐKØ×!Ò! %Ñ(Ô(×9Ò9¸&À'È8ÑTÔTÐTÐTÐTr   c                 óx   — t          d||¦  «         |                      |¦  «                             |¦  «         d S )Nzmember joined)r0   ri   ÚmemberJoined©r   Úmemberro   s      r   Úremote_memberJoinedz&TwistedWordsClient.remote_memberJoined…   s<   € Ýˆo˜v uÑ-Ô-Ð-Ø×!Ò! %Ñ(Ô(×5Ò5°fÑ=Ô=Ð=Ð=Ð=r   c                 ót   — t          d¦  «         |                      |¦  «                             |¦  «         d S )Nzmember left)r0   ri   Ú
memberLeftrx   s      r   Úremote_memberLeftz$TwistedWordsClient.remote_memberLeft‰   s8   € ÝˆmÑÔÐØ×!Ò! %Ñ(Ô(×3Ò3°FÑ;Ô;Ð;Ð;Ð;r   c                 ób   — | j                              || ¦  «                             |¦  «         d S r   ©r4   rd   r7   )r   r   r   s      r   Úremote_notifyStatusChangedz-TwistedWordsClient.remote_notifyStatusChanged�   s.   € ØŒ	×Ò˜D $Ñ'Ô'×1Ò1°&Ñ9Ô9Ð9Ð9Ð9r   c                 ó”   — | j                              | j                              || ¦  «        ¦  «                             ||¦  «         d S r   )r4   ÚgetConversationrd   ÚshowMessage)r   r   rt   r*   s       r   Úremote_receiveDirectMessagez.TwistedWordsClient.remote_receiveDirectMessage�   sK   € ØŒ	×!Ò! $¤)×"5Ò"5°d¸DÑ"AÔ"AÑBÔB×NÒNØ�Xñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ór   — |D ]3\  }}| j                              || ¦  «                             |¦  «         Œ4d S r   r   )r   Úclistr   r   s       r   Úremote_receiveContactListz,TwistedWordsClient.remote_receiveContactList•   sH   € Ø!ð 	>ð 	>‰LˆD�&ØŒI×Ò  dÑ+Ô+×5Ò5°fÑ=Ô=Ð=Ð=ð	>ð 	>r   c                 ó˜   — d|v rE|                       |¦  «                             |d         |                     dd ¦  «        ¦  «         d S d S )NrI   rJ   )ri   rL   Úget)r   Údict_Ú	groupNames      r   Úremote_setGroupMetadataz*TwistedWordsClient.remote_setGroupMetadata™   s\   € Ø�eÐÐØ×%Ò% iÑ0Ô0×9Ò9Ø�g” §	¢	¨.¸$Ñ ?Ô ?ñô ð ð ð ð Ðr   c                 ó¸   — |                       |¦  «                             ¦   «          | j                             d|¦  «                             | j        |¦  «        S )NÚ	joinGroup)rg   rQ   r$   r'   ÚaddCallbackÚ_cbGroupJoinedre   s     r   rŽ   zTwistedWordsClient.joinGroupŸ   sS   € Ø�Š�dÑÔ×#Ò#Ñ%Ô%Ð%ØÔ×*Ò*¨;¸Ñ=Ô=×IÒIØÔ ñ
ô 
ð 	
r   c                 ó¸   — |                       |¦  «                             ¦   «          | j                             d|¦  «                             | j        |¦  «        S rV   )rg   rT   r$   r'   r�   Ú_cbGroupLeftre   s     r   rW   zTwistedWordsClient.leaveGroup¥   sS   € Ø�Š�dÑÔ×#Ò#Ñ%Ô%Ð%ØÔ×*Ò*¨<¸Ñ>Ô>×JÒJØÔ˜tñ
ô 
ð 	
r   c                 óÂ   — | j                              |                      |¦  «        ¦  «        }|                     dd¦  «         | j                             d|¦  «         d S )NÚsysz
you joinedÚgetGroupMembers)r4   ri   rg   rr   r$   r'   ©r   r2   r   Ú	groupConvs       r   r�   z!TwistedWordsClient._cbGroupJoined«   sY   € Ø”I×2Ò2°4·=²=ÀÑ3FÔ3FÑGÔGˆ	Ø×"Ò" 5¨,Ñ7Ô7Ð7ØÔ×#Ò#Ð$5°tÑ<Ô<Ð<Ð<Ð<r   c                 ó®   — t          d|¦  «         | j                             |                      |¦  «        d¦  «        }|                     dd¦  «         d S )NÚleftrO   r”   zyou left)r0   r4   ri   rg   rr   r–   s       r   r’   zTwistedWordsClient._cbGroupLeft°   sQ   € Ýˆf�dÑÔÐØ”I×2Ò2°4·=²=ÀÑ3FÔ3FÈÑJÔJˆ	Ø×"Ò" 5¨*Ñ5Ô5Ð5Ð5Ð5r   c                 ó¨   — t          d|¦  «         | j        �| j                             | ¦  «         || _        | j                             ¦   «          d S )NzConnected Words Client!)r0   r^   Úcallbackr$   r4   r5   )r   r$   s     r   Ú	connectedzTwistedWordsClient.connectedµ   sU   € ÝÐ'¨Ñ5Ô5Ð5ØÔÐ*ØÔ×(Ò(¨Ñ.Ô.Ð.Ø&ˆÔØŒ	×!Ò!Ñ#Ô#Ð#Ð#Ð#r   r   )r8   r9   r:   r;   r   rd   rg   ri   rk   rp   ru   rz   r}   r€   r„   r‡   rŒ   rŽ   rW   r�   r’   rœ   r<   r   r   rZ   rZ   `   sE  € € € € € ðð ð
-ð 
-ð 
-ð 
-ð/ð /ð /ð.ð .ð .ðCð Cð Cð8ð 8ð 8ð@ð @ð @ðUð Uð Uð Uð>ð >ð >ð<ð <ð <ð:ð :ð :ð
ð 
ð 
ð 
ð
>ð >ð >ðð ð ð
ð 
ð 
ð
ð 
ð 
ð=ð =ð =ð
6ð 6ð 6ð
$ð $ð $ð $ð $r   rZ   N)útwisted.wordsztwisted.realityc                   óH   — e Zd ZdZeZeZ	 d
d„Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd	„ ZdS )Ú	PBAccountÚPBNc           	      óÐ   — t           j                             | ||||||¦  «         g | _        |sdd|fg}|D ].\  }}	}
| j                             t
          |         |	|
g¦  «         Œ/dS )z_
        @param username: The name of your PB Identity.
        @type username: string
        r�   N)r	   ÚAbstractAccountr   ÚservicesÚappendÚpbFrontEnds)r   r]   Ú	autoLoginÚusernameÚpasswordÚhostÚportr£   ÚserviceTyper`   ra   s              r   r   zPBAccount.__init__Æ   s�   € õ 	Ô#×,Ò,Ø�+˜y¨(°H¸dÀDñ	
ô 	
ð 	
ð ˆŒØð 	FØ(¨/¸8ÐDÐEˆHØ9Að 	ð 	Ñ5ˆK˜ oØŒM× Ò Ý˜[Ô)¨;¸ÐHñô ð ð ð	ð 	r   c                 óð   ‡ ‡— ‰ j         sZ‰ j        sSd‰ _         ‰                      ‰¦  «        }|                     ‰ j        ¦  «         ˆˆ fd„}|                     |¦  «         |S t          j        d¦  «        ‚)z
        @returns: this breaks with L{interfaces.IAccount}
        @returntype: DeferredList of L{interfaces.IClient}s
        rO   c                 óš   •— | D ]F\  }}|r+‰                      |¦  «         ‰                     |¦  «         Œ2t          j        |¦  «         ŒGd S r   )ÚregisterAccountClientÚ	_cb_logOnr   Úerr)ÚresultsÚsuccessr2   rb   r   s      €€r   ÚregisterManyz%PBAccount.logOn.<locals>.registerManyå   s`   ø€ Ø'.ð (ð (‘O�G˜VØð (Ø×4Ò4°VÑ<Ô<Ð<ØŸš vÑ.Ô.Ð.Ð.åœ ™œ˜˜ð(ð (r   zConnection in progress)Ú_isConnectingÚ	_isOnlineÚ_startLogOnr%   Ú_loginFailedr�   r   ÚConnectionError)r   rb   r+   r³   s   ``  r   ÚlogOnzPBAccount.logOnØ   s•   øø€ ð Ô"ð 	B¨T¬^ð 	BØ!"ˆDÔØ× Ò  Ñ(Ô(ˆAØ�LŠL˜Ô*Ñ+Ô+Ð+ð(ð (ð (ð (ð (ð (ð �MŠM˜,Ñ'Ô'Ð'ØˆHåÔ'Ð(@ÑAÔAÐAr   c                 ó   — d S r   r<   r   s    r   ÚlogOffzPBAccount.logOffò   s   € àˆr   c                 ó¬   — t          dd¬¦  «         t          j        | j        | j        ¦  «        }|                     | j        | j        |f¬¦  «         |S )NzConnecting...ú ©Úend©ÚcallbackArgs)r0   r   ÚgetObjectAtr©   rª   ÚaddCallbacksÚ_cbConnectedÚ_ebConnected)r   rb   r+   s      r   r¶   zPBAccount._startLogOnö   sO   € Ýˆo 3Ð'Ñ'Ô'Ð'ÝŒN˜4œ9 d¤iÑ0Ô0ˆØ	�Š�tÔ(¨$Ô*;È6È)ˆÑTÔTÐTØˆr   c                 óÌ   — t          d¦  «         t          dd¬¦  «         t          j        || j        | j        ¦  «        }|                     | j        | j        |f¬¦  «         |S )Nz
Connected!zIdentifying...r½   r¾   rÀ   )r0   r   ÚauthIdentityr§   r¨   rÃ   Ú_cbIdentrÅ   )r   Úrootrb   r+   s       r   rÄ   zPBAccount._cbConnectedü   s_   € ÝˆlÑÔÐÝÐ CÐ(Ñ(Ô(Ð(ÝŒO˜D $¤-°´Ñ?Ô?ˆØ	�Š�t”} dÔ&7ÀvÀiˆÑPÔPÐPØˆr   c                 ó¶  — |s>t          d¦  «         |                      t          t          d¦  «        ¦  «        ¦  «        S t          d¦  «         g }| j        D ]m\  }}}t          j        ¦   «         }|                     |¦  «          || ||||¦  «        }|                     d|||¦  «         	                    |j
        ¦  «         Œnt          j        |¦  «        S )Nzfalsely identified.zusername or password incorrectzIdentified!Úattach)r0   rÅ   r   Ú	Exceptionr£   r   ÚDeferredr¤   r'   r�   rœ   ÚDeferredList)	r   Úidentrb   ÚdlÚhandlerClassÚsnameÚpnamer+   Úhandlers	            r   rÈ   zPBAccount._cbIdent  sï   € Øð 	ÝÐ'Ñ(Ô(Ð(Ø×$Ò$Ý�	Ð"BÑCÔCÑDÔDñô ð õ 	ˆmÑÔÐØˆØ*.¬-ð 	ð 	Ñ&ˆL˜% Ý”Ñ Ô ˆAØ�IŠI�a‰LŒLˆLØ"�l 4¨°°v¸qÑAÔAˆGØ×Ò˜X u¨e°WÑ=Ô=×IÒIØÔ!ñô ð ð õ Ô! "Ñ%Ô%Ð%r   c                 ó$   — t          d¦  «         |S )NzNot connected.)r0   )r   r   s     r   rÅ   zPBAccount._ebConnected  s   € ÝÐÑÔÐØˆr   r   )r8   r9   r:   ÚgatewayTyper>   Ú_groupFactoryr   Ú_personFactoryr   r¹   r»   r¶   rÄ   rÈ   rÅ   r<   r   r   rŸ   rŸ   À   s›   € € € € € à€KØ%€MØ'€Nð PTðð ð ð ð$Bð Bð Bð4ð ð ðð ð ðð ð ð&ð &ð &ð"ð ð ð ð r   rŸ   )r;   Úzope.interfacer   Útwisted.internetr   r   Útwisted.pythonr   Útwisted.python.failurer   Útwisted.spreadr   Útwisted.words.imr	   r
   Útwisted.words.im.localsr   r   r   r   r   ÚIGrouprA   r>   ÚReferenceableÚAbstractClientMixinrZ   r¥   ÚIAccountr¢   rŸ   r<   r   r   ú<module>rä      sÊ  ðð
ð ð
 'Ð &Ð &Ð &Ð &Ð &à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð;ð ;ð ;ð ;ð ;˜Ô3ñ ;ô ;ð ;ðB €ˆZÔÑÔð'Sð 'Sð 'Sð 'Sð 'S˜Ô1ñ 'Sô 'Sñ  Ôð'SðTZ$ð Z$ð Z$ð Z$ð Z$˜Ô)¨;Ô+Jñ Z$ô Z$ð Z$ðz !3ÀtÐLÐL€ð €ˆZÔ Ñ!Ô!ðUð Uð Uð Uð U�Ô+ñ Uô Uñ "Ô!ðUð Uð Ur   