§
    X˜¶f�  ã                   ó¾   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl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  G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Údatetime)Ú	timedelta)ÚDecimal)ÚOptional)ÚDynamoDBServiceResource)ÚFlask)Ú
want_bytesé   )ÚServerSideSessionÚServerSideSessionInterface)ÚDefaultsc                   ó   — e Zd ZdS )ÚDynamoDBSessionN)Ú__name__Ú
__module__Ú__qualname__© ó    úS/var/www/piapp/venv/lib/python3.11/site-packages/flask_session/dynamodb/dynamodb.pyr   r      s   € € € € € Ø€Dr   r   c                   óî   ‡ — e Zd ZdZeZej        ej        ej	        ej
        ej        ej        ej        fdedee         dededededed	efˆ fd
„Zdedee         fd„Zdeddfd„Zdedededdfd„Zˆ xZS )ÚDynamoDBSessionInterfaceao  A Session interface that uses dynamodb as backend. (`boto3` required)

    :param client: A ``DynamoDBServiceResource`` instance.
    :param key_prefix: A prefix that is added to all DynamoDB store keys.
    :param use_signer: Whether to sign the session id cookie or not.
    :param permanent: Whether to use permanent session or not.
    :param sid_length: The length of the generated session id in bytes.
    :param table_name: DynamoDB table name to store the session.

    .. versionadded:: 0.6
        The `sid_length` parameter was added.

    .. versionadded:: 0.2
        The `use_signer` parameter was added.
    ÚappÚclientÚ
key_prefixÚ
use_signerÚ	permanentÚ
sid_lengthÚserialization_formatÚ
table_namec	                 óN  •— |€5t          j        dt          d¬¦  «         t          j        ddddd¬¦  «        }	 |                     d	d
dœg|d	ddœgd¬¦  «         |j        j                             d¦  «         	                    |¬¦  «         |j        j         
                    | j        dddœ¬¦  «         n&# t          |j        j        j        j        f$ r Y nw xY w|| _        |                     |¦  «        | _        t#          ¦   «                              ||||||¦  «         d S )NzjNo valid DynamoDBServiceResource instance provided, attempting to create a new instance on localhost:8000.é   )Ú
stacklevelÚdynamodbzhttp://localhost:8000z	us-west-2Údummy)Úendpoint_urlÚregion_nameÚaws_access_key_idÚaws_secret_access_keyÚidÚS)ÚAttributeNameÚAttributeTypeÚHASH)r+   ÚKeyTypeÚPAY_PER_REQUEST)ÚAttributeDefinitionsÚ	TableNameÚ	KeySchemaÚBillingModeÚtable_exists)r1   TÚ
expiration)ÚEnabledr+   )r1   ÚTimeToLiveSpecification)ÚwarningsÚwarnÚRuntimeWarningÚboto3ÚresourceÚcreate_tableÚmetar   Ú
get_waiterÚwaitÚupdate_time_to_liver   ÚAttributeErrorÚ
exceptionsÚResourceInUseExceptionÚTableÚstoreÚsuperÚ__init__)
Úselfr   r   r   r   r   r   r   r   Ú	__class__s
            €r   rH   z!DynamoDBSessionInterface.__init__'   s�  ø€ ð ˆ>ÝŒMØ|ÝØðñ ô ð õ
 ”^ØØ4Ø'Ø")Ø&-ðñ ô ˆFð	Ø×Òà&*¸SÐAÐAð&ð %à&*°vÐ>Ð>ðð .ð  ñ 	ô 	ð 	ð ŒKÔ×)Ò)¨.Ñ9Ô9×>Ò>ÈÐ>ÑTÔTÐTØŒKÔ×2Ò2Øœ/à#Ø%1ð)ð )ð 3ñ ô ð ð øõ  ¤Ô 2Ô =Ô TÐUð 	ð 	ð 	àˆDð	øøøð ˆŒØ—\’\ *Ñ-Ô-ˆŒ
Ý‰Œ×ÒØØØØØØ ñ	
ô 	
ð 	
ð 	
ð 	
s   ºA=B8 Â8 CÃCÚstore_idÚreturnc                 óì   — | j                              d|i¬¦  «                             d¦  «        }|rAt          |                     d¦  «        j        ¦  «        }| j                             |¦  «        S d S )Nr)   ©ÚKeyÚItemÚval)rF   Úget_itemÚgetr	   ÚvalueÚ
serializerÚdecode)rI   rK   ÚdocumentÚserialized_session_datas       r   Ú_retrieve_session_dataz/DynamoDBSessionInterface._retrieve_session_datac   so   € à”:×&Ò&¨D°(Ð+;Ð&Ñ<Ô<×@Ò@ÀÑHÔHˆØð 	CÝ&0°·²¸eÑ1DÔ1DÔ1JÑ&KÔ&KÐ#Ø”?×)Ò)Ð*AÑBÔBÐBØˆtr   Nc                 ó@   — | j                              d|i¬¦  «         d S )Nr)   rN   )rF   Údelete_item)rI   rK   s     r   Ú_delete_sessionz(DynamoDBSessionInterface._delete_sessionk   s&   € ØŒ
×Ò D¨(Ð#3ÐÑ4Ô4Ð4Ð4Ð4r   Úsession_lifetimeÚsessionc           	      óè   — t          j        ¦   «         |z   }| j                             |¦  «        }| j                             d|id|t          |                     ¦   «         ¦  «        dœ¬¦  «         d S )Nr)   z#SET val = :value, expiration = :exp)z:valuez:exp)rO   ÚUpdateExpressionÚExpressionAttributeValues)r   ÚutcnowrU   ÚencoderF   Úupdate_itemr   Ú	timestamp)rI   r]   r^   rK   Ústorage_expiration_datetimerX   s         r   Ú_upsert_sessionz(DynamoDBSessionInterface._upsert_sessionn   sŒ   € õ '/¤oÑ&7Ô&7Ð:JÑ&JÐ#à"&¤/×"8Ò"8¸Ñ"AÔ"AÐàŒ
×Òà�hðð Cà1ÝÐ ;× EÒ EÑ GÔ GÑHÔHð'ð 'ð 	ñ 		
ô 		
ð 		
ð 		
ð 		
r   )r   r   r   Ú__doc__r   Úsession_classr   ÚSESSION_DYNAMODBÚSESSION_KEY_PREFIXÚSESSION_USE_SIGNERÚSESSION_PERMANENTÚSESSION_ID_LENGTHÚSESSION_SERIALIZATION_FORMATÚSESSION_DYNAMODB_TABLEr   r   r   ÚstrÚboolÚintrH   ÚdictrY   r\   Ú	TimeDeltar   rg   Ú__classcell__)rJ   s   @r   r   r      sP  ø€ € € € € ðð ð  $€Mð
 5=Ô4MØ"Ô5Ø#Ô6Ø"Ô4Ø"Ô4Ø$,Ô$IØ"Ô9ð:
ð :
àð:
ð Ð0Ô1ð:
ð ð	:
ð
 ð:
ð ð:
ð ð:
ð "ð:
ð ð:
ð :
ð :
ð :
ð :
ð :
ðx¨sð °xÀ´~ð ð ð ð ð5¨ð 5°ð 5ð 5ð 5ð 5ð
Ø )ð
Ø4Eð
ØQTð
à	ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r   r   )r8   r   r   ru   Údecimalr   Útypingr   r;   Ú$mypy_boto3_dynamodb.service_resourcer   Úflaskr   Úitsdangerousr	   Úbaser   r   Údefaultsr   r   r   r   r   r   ú<module>r~      s)  ðØ €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø HÐ HÐ HÐ HÐ HÐ HØ Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #à @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	Ð'ñ 	ô 	ð 	ðj
ð j
ð j
ð j
ð j
Ð9ñ j
ô j
ð j
ð j
ð j
r   