HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/awscli/customizations/history/__pycache__/db.cpython-36.pyc
3

�T_1$�@s�ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddlm
Z
ddlmZeje
�ZGdd�de�ZGdd	�d	ej�ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZGdd�de	�ZdS)�N)�collections_abc)�BaseHistoryHandler)�sqlite3)�binary_typec@s^eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
edd��Zej
dd��ZdS)�DatabaseConnectionz�
        CREATE TABLE IF NOT EXISTS records (
          id TEXT,
          request_id TEXT,
          source TEXT,
          event_type TEXT,
          timestamp INTEGER,
          payload TEXT
        )zPRAGMA journal_mode=WALcCstj|ddd�|_|j�dS)NF)Zcheck_same_threadZisolation_level)rZconnect�_connection�_ensure_database_setup)�selfZdb_filename�r
�/usr/lib/python3.6/db.py�__init__*szDatabaseConnection.__init__cCs|jj�dS)N)r�close)r	r
r
rr
/szDatabaseConnection.closecGs|jj|f|��S)N)r�execute)r	ZqueryZ
parametersr
r
rr2szDatabaseConnection.executecCs|j�|j�dS)N)�_create_record_table�_try_to_enable_wal)r	r
r
rr5sz)DatabaseConnection._ensure_database_setupcCs|j|j�dS)N)r�
_CREATE_TABLE)r	r
r
rr9sz'DatabaseConnection._create_record_tablecCs6y|j|j�Wn tjk
r0tjd�YnXdS)NzFailed to enable sqlite WAL.)r�_ENABLE_WALr�Error�LOG�debug)r	r
r
rr<sz%DatabaseConnection._try_to_enable_walcCs|jjS)N)r�row_factory)r	r
r
rrDszDatabaseConnection.row_factorycCs||j_dS)N)rr)r	rr
r
rrHsN)�__name__�
__module__�__qualname__rrrr
rrrr�propertyr�setterr
r
r
rrs	rcsDeZdZdd�Zdd�Zdd�Zdd�Z�fd	d
�Zdd�Z�Z	S)
�PayloadSerializercCst|�S)N)�dict)r	�objr
r
r�_encode_mutable_mappingNsz)PayloadSerializer._encode_mutable_mappingcCs|j�S)N)Z	isoformat)r	rr
r
r�_encode_datetimeQsz"PayloadSerializer._encode_datetimecCs,y|jd�}Wntk
r&d}YnX|S)Nzutf-8z<Byte sequence>)�decode�UnicodeDecodeError)r	rr
r
r�_try_decode_bytesTs

z#PayloadSerializer._try_decode_bytescs`t|t�r�j|�}nFt|t�r<t�fdd�|j�D��}n t|ttf�r\�fdd�|D�}|S)Nc3s |]\}}|�j|�fVqdS)N)�_remove_non_unicode_stings)�.0�k�v)r	r
r�	<genexpr>_sz?PayloadSerializer._remove_non_unicode_stings.<locals>.<genexpr>csg|]}�j|��qSr
)r$)r%�o)r	r
r�
<listcomp>bsz@PayloadSerializer._remove_non_unicode_stings.<locals>.<listcomp>)�
isinstance�strr#r�items�list�tuple)r	rr
)r	rr$[s

z,PayloadSerializer._remove_non_unicode_stingscs@ytt|�j|�Stk
r:|j|�}tt|�j|�SXdS)N)�superr�encoder"r$)r	rZscrubbed_obj)�	__class__r
rr1es

zPayloadSerializer.encodecCsLt|tj�r|j|�St|tj�r,|j|�St|t�r@|j|�St|�SdS)N)	r+�datetimer r�MutableMappingrrr#�repr)r	rr
r
r�defaultws



zPayloadSerializer.default)
rrrrr r#r$r1r6�
__classcell__r
r
)r2rrMs
rc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�DatabaseRecordWriterz
        INSERT INTO records(
            id, request_id, source, event_type, timestamp, payload)
        VALUES (?,?,?,?,?,?) cCs||_tj�|_dS)N)r�	threadingZLock�_lock)r	�
connectionr
r
rr�szDatabaseRecordWriter.__init__cCs|jj�dS)N)rr
)r	r
r
rr
�szDatabaseRecordWriter.closec
Cs0|j|�}|j�|jj|j|�WdQRXdS)N)�_create_db_recordr:rr�
_WRITE_RECORD)r	�record�	db_recordr
r
r�write_record�s
z!DatabaseRecordWriter.write_recordcCs@|d}tj|dtd�}|d|jd�|d||d|f}|S)N�
event_type�payload)�cls�
command_id�
request_id�source�	timestamp)�json�dumpsr�get)r	r>rAZjson_serialized_payloadr?r
r
rr<�s
z&DatabaseRecordWriter._create_db_recordN)rrrr=rr
r@r<r
r
r
rr8�s
r8c@sXeZdZdZdeZdeZdeZdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�DatabaseRecordReaderzORDER BY timestampz�
        SELECT * FROM records
        WHERE id =
        (SELECT id FROM records WHERE timestamp =
        (SELECT max(timestamp) FROM records)) %s;z%SELECT * from records where id = ? %sz�SELECT a.id AS id_a,     b.id AS id_b,     a.timestamp as timestamp,     a.payload AS args,     b.payload AS rc FROM records a, records b where a.event_type == "CLI_ARGUMENTS" AND     b.event_type = "CLI_RC" AND     id_a == id_b %s DESCcCs||_|j|j_dS)N)r�_row_factoryr)r	r;r
r
rr�szDatabaseRecordReader.__init__cCs|jj�dS)N)rr
)r	r
r
rr
�szDatabaseRecordReader.closecCsJi}x@t|j�D]2\}}||}|ddkr6tj|�}|||d<qW|S)NrrB)�	enumerate�descriptionrH�loads)r	�cursor�row�d�idx�col�valr
r
rrL�s
z!DatabaseRecordReader._row_factoryccs&|jj|j�}x|D]
}|VqWdS)N)rr�_GET_LAST_ID_RECORDS)r	rPrQr
r
r�iter_latest_records�s
z(DatabaseRecordReader.iter_latest_recordsccs*|jj|j|g�}x|D]
}|VqWdS)N)rr�_GET_RECORDS_BY_ID)r	Z	record_idrPrQr
r
r�iter_records�s
z!DatabaseRecordReader.iter_recordsccs&|jj|j�}x|D]
}|VqWdS)N)rr�_GET_ALL_RECORDS)r	rPrQr
r
r�iter_all_records�s
z%DatabaseRecordReader.iter_all_recordsN)
rrrZ	_ORDERINGrVrXrZrr
rLrWrYr[r
r
r
rrK�s		rKc@sPeZdZeddddg�ZdZdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�ZdS)�
RecordBuilderZAPI_CALLZHTTP_REQUESTZ
HTTP_RESPONSEZPARSED_RESPONSEcCsd|_tj�|_dS)N)�_identifierr9Zlocal�_locals)r	r
r
rr�szRecordBuilder.__init__cCst|jdd�}|S)NrE)�getattrr^)r	rEr
r
r�_get_current_thread_request_id�sz,RecordBuilder._get_current_thread_request_idcCst|jdttj���dS)NrE)�setattrr^r,�uuid�uuid4)r	r
r
r�_start_http_lifecycle�sz#RecordBuilder._start_http_lifecyclecCs,||jkr|j�||jkr(|j�}|SdS)N)�!_START_OF_REQUEST_LIFECYCLE_EVENTrd�_REQUEST_LIFECYCLE_EVENTSr`)r	rArEr
r
r�_get_request_id�s

zRecordBuilder._get_request_idcCs|jdkrttj��|_|jS)N)r]r,rbrc)r	r
r
r�_get_identifier�s
zRecordBuilder._get_identifiercCs>|j�}||||ttj�d�d�}|j|�}|r:||d<|S)Ni�)rDrArBrFrGrE)rh�int�timerg)r	rArBrFZuidr>rEr
r
r�build_record�s
zRecordBuilder.build_recordN)rrr�setrfrerr`rdrgrhrkr
r
r
rr\�sr\c@seZdZdd�Zdd�ZdS)�DatabaseHistoryHandlercCs||_||_dS)N)�_writer�_record_builder)r	�writerZrecord_builderr
r
rr
szDatabaseHistoryHandler.__init__cCs |jj|||�}|jj|�dS)N)rorkrnr@)r	rArBrFr>r
r
r�emitszDatabaseHistoryHandler.emitN)rrrrrqr
r
r
rrm	srm)rbrjrHr3r9ZloggingZ
awscli.compatrZbotocore.historyrrrZ	getLoggerrr�objectrZJSONEncoderrr8rKr\rmr
r
r
r�<module>
s 
/:!5,