
    f                     P    d Z ddlmZ ddlZddlZ G d de      Z G d de      Zy)z,A simple store using only in-process memory.    )nonceNc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ServerAssocsc                     i | _         y N)assocsselfs    P/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/openid/store/memstore.py__init__zServerAssocs.__init__
   s	        c                 6    || j                   |j                  <   y r   )r   handle)r
   assocs     r   setzServerAssocs.set   s    $)ELL!r   c                 8    | j                   j                  |      S r   )r   getr
   r   s     r   r   zServerAssocs.get   s    {{v&&r   c                 >    	 | j                   |= y# t        $ r Y yw xY w)NTF)r   KeyErrorr   s     r   removezServerAssocs.remove   s,    	F#   		s    	c                     d}t        | j                  j                               D ]   }||j                  |j                  k  s|}" |S )zhReturns association with the oldest issued date.

        or None if there are no associations.
        N)listr   valuesissued)r
   bestr   s      r   r   zServerAssocs.best   sJ    
 $++,,./ 	E|t{{U\\9	 r   c                     g }| j                   j                         D ]&  \  }}|j                  dk(  s|j                  |       ( |D ]  }| j                   |=  t	        |      t	        | j                         fS )zoRemove expired associations.

        @return: tuple of (removed associations, remaining associations)
        r   )r   items	expiresInappendlen)r
   r   r   r   s       r   cleanupzServerAssocs.cleanup&   sv    
 ![[..0 	&MFE!#f%	&  	$FF#	$6{C,,,r   N)	__name__
__module____qualname__r   r   r   r   r   r"    r   r   r   r   	   s     *'	-r   r   c                   N    e Zd ZdZd Zd Zd ZddZd Zd Z	d	 Z
d
 Zd Zd Zy)MemoryStorezcIn-process memory store.

    Use for single long-running processes.  No persistence supplied.
    c                      i | _         i | _        y r   server_assocsnoncesr	   s    r   r   zMemoryStore.__init__:   s    r   c                 v    	 | j                   |   S # t        $ r t               x}| j                   |<   |cY S w xY wr   )r+   r   r   )r
   
server_urlr   s      r   _getServerAssocszMemoryStore._getServerAssocs>   sC    	%%j11 	6BnDFT''
3M	s    $88c                 n    | j                  |      }|j                  t        j                  |             y r   )r/   r   copydeepcopy)r
   r.   r   r   s       r   storeAssociationzMemoryStore.storeAssociationE   s'    &&z2

4=='(r   Nc                 j    | j                  |      }||j                         S |j                  |      S r   )r/   r   r   r
   r.   r   r   s       r   getAssociationzMemoryStore.getAssociationI   s2    &&z2>;;= ::f%%r   c                 F    | j                  |      }|j                  |      S r   )r/   r   r5   s       r   removeAssociationzMemoryStore.removeAssociationP   s!    &&z2}}V$$r   c                     t        |t        j                         z
        t        j                  kD  ryt	        |      t        |      t	        |      f}|| j                  v ryd | j                  |<   y)NFT)abstimer   SKEWstrintr,   )r
   r.   	timestampsaltanonces        r   useNoncezMemoryStore.useNonceT   sY    y499;&'%**4j/3y>3t9=T[[ "&DKKr   c                    t        j                          }g }| j                  j                         D ]6  }t        |d   |z
        t        j
                  kD  s&|j                  |       8 |D ]  }| j                  |=  t        |      S )N   )r;   r,   keysr:   r   r<   r    r!   )r
   nowexpiredrA   s       r   cleanupNonceszMemoryStore.cleanupNonces_   sz    iikkk&&( 	'F6!9s?#ejj0v&	'
  	$FF#	$7|r   c                     g }d}| j                   j                         D ]1  \  }}|j                         \  }}||z  }|r!|j                  |       3 |D ]  }| j                   |=  |S )Nr   )r+   r   r"   r    )r
   remove_urlsremoved_assocsr.   r   removed	remainings          r   cleanupAssociationszMemoryStore.cleanupAssociationsk   s    "&"4"4":":"< 	/J!'!1GYg%N"":.		/ & 	/J"":.	/r   c                 j    | j                   |j                   k(  xr | j                  |j                  k(  S r   r*   r
   others     r   __eq__zMemoryStore.__eq__y   s0    ##u':':: .,	/r   c                     | |k(   S r   r&   rP   s     r   __ne__zMemoryStore.__ne__}   s    EM""r   r   )r#   r$   r%   __doc__r   r/   r3   r6   r8   rB   rH   rN   rR   rT   r&   r   r   r(   r(   4   s9    
)&%	
/#r   r(   )rU   openid.storer   r1   r;   objectr   r(   r&   r   r   <module>rX      s,    2   (-6 (-VJ#& J#r   