§
    E«j•  ã                   óž   — d Z ddlmZ ddlZddlZ ej        e¦  «        Ze G d„ d¦  «        ¦   «         Zde	dedefd	„Z
 G d
„ d¦  «        ZdS )zCode related to blocklists.é    )Ú	dataclassNc                   ó:   — e Zd ZU dZee         ed<   edz  ed<   dS )ÚBlocklistDatazFDataclass for online blocklist requests, including usernames and etag.ÚusersNÚetag)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚlistÚstrÚ__annotations__© ó    ú(/app/lichess-bot-master/lib/blocklist.pyr   r   	   s8   € € € € € € àPÐPà�Œ9ÐÐÑØ
�‰*ÐÐÑÐÐr   r   ÚurlÚold_dataÚreturnc                 óV  ‡— |j         r	d|j         ini }t          j        | |d¬¦  «        }|                     ¦   «          |j        dk    r|S ˆfd„|j                             ¦   «                              ¦   «         D ¦   «         }t          ||j	                             d¦  «        ¦  «        S )NzIf-None-Matché   )ÚheadersÚtimeouti0  c                 ó@   •— g | ]}|                      ¦   «         xŠ¯‰‘ŒS r   )Ústrip)Ú.0ÚlineÚusernames     €r   ú
<listcomp>z._parse_block_list_from_url.<locals>.<listcomp>   s0   ø€ ÐhÐhÐh˜tÐZ^×ZdÒZdÑZfÔZfÐNfÈhÐh�(ÐhÐhÐhr   ÚETag)
r   ÚrequestsÚgetÚraise_for_statusÚstatus_codeÚtextr   Ú
splitlinesr   r   )r   r   r   ÚresponseÚ
block_listr   s        @r   Ú_parse_block_list_from_urlr(      sª   ø€ Ø3;´=ÐH� ¤Ð/Ð/Àb€GÝŒ|˜C¨¸"Ð=Ñ=Ô=€Hà×ÒÑÔÐàÔ˜sÒ"Ð"ØˆàhÐhÐhÐh x¤}×':Ò':Ñ'<Ô'<×'GÒ'GÑ'IÔ'IÐhÑhÔh€Jå˜ XÔ%5×%9Ò%9¸&Ñ%AÔ%AÑBÔBÐBr   c                   óF   — e Zd ZdZdee         ddfd„Zd	d„Zdedefd„Z	dS )
ÚOnlineBlocklistzManage online blocklists.Úurlsr   Nc                 óP   — d„ |D ¦   «         | _         |                      ¦   «          dS )z%Initialize the OnlineBlockList class.c                 ó0   — i | ]}|t          g d ¦  «        “ŒS ©N)r   )r   r   s     r   ú
<dictcomp>z,OnlineBlocklist.__init__.<locals>.<dictcomp>$   s%   € Ð3bÐ3bÐ3bÐVY°C½-ÈÈDÑ:QÔ:QÐ3bÐ3bÐ3br   N)Ú	blocklistÚrefresh)Úselfr+   s     r   Ú__init__zOnlineBlocklist.__init__"   s)   € à3bÐ3bÐ]aÐ3bÑ3bÔ3bˆŒØ�Š‰Œˆˆˆr   c                 ó0  — t                                dt          | j        ¦  «        › d�¦  «         | j                             ¦   «         D ]K\  }}	 t          ||¦  «        | j        |<   Œ# t          $ r  t                                d|› �¦  «         Y ŒHw xY wdS )z8Pull updated blocklists from the list of blocklist urls.zRefreshing z online blocklistsz#Failed to refresh online blocklist N)ÚloggerÚinfoÚlenr0   Úitemsr(   Ú	ExceptionÚwarning)r2   r   Údatas      r   r1   zOnlineBlocklist.refresh'   s¸   € å�ŠÐI¥# d¤nÑ"5Ô"5ÐIÐIÐIÑJÔJÐJàœ×-Ò-Ñ/Ô/ð 	Lð 	L‰IˆC�ðLÝ&@ÀÀdÑ&KÔ&K�”˜sÑ#Ð#øÝð Lð Lð LÝ—’ÐJÀSÐJÐJÑKÔKÐKÐKÐKðLøøøð	Lð 	Ls   ÁA)Á)'BÂBÚitemc                 óh   ‡— t          ˆfd„| j                             ¦   «         D ¦   «         ¦  «        S )z)Check if an username is in the blocklist.c              3   ó*   •K  — | ]}‰|j         v V — Œd S r.   )r   )r   r0   r<   s     €r   ú	<genexpr>z/OnlineBlocklist.__contains__.<locals>.<genexpr>3   s*   øè è € ÐTÐT¨y�4˜9œ?Ð*ÐTÐTÐTÐTÐTÐTr   )Úanyr0   Úvalues)r2   r<   s    `r   Ú__contains__zOnlineBlocklist.__contains__1   s4   ø€ åÐTÐTÐTÐT¸D¼N×<QÒ<QÑ<SÔ<SÐTÑTÔTÑTÔTÐTr   )r   N)
r   r	   r
   r   r   r   r3   r1   ÚboolrB   r   r   r   r*   r*      s‚   € € € € € Ø#Ð#ð˜T #œYð ¨4ð ð ð ð ð
Lð Lð Lð LðU ð U¨ð Uð Uð Uð Uð Uð Ur   r*   )r   Údataclassesr   r    ÚloggingÚ	getLoggerr   r5   r   r   r(   r*   r   r   r   ú<module>rG      sá   ðØ !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø €€€Ø €€€à	ˆÔ	˜8Ñ	$Ô	$€ð ðð ð ð ð ñ ô ñ „ððC Cð C°=ð CÀ]ð Cð Cð Cð CðUð Uð Uð Uð Uñ Uô Uð Uð Uð Ur   