%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/duplicity/backends/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/duplicity/backends/__pycache__/gdrivebackend.cpython-312.pyc

�

�2eA���ddlZddlZddlZddlmZddlmZGd�dejj�Z	ejjde	�ejjjdg�y)�N)�log)�BackendExceptionc�N�eZdZdZdZdZd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zy
)�
GDriveBackendz1Connect to remote store using Google Drive API V3�diPc�
�tjjj||�	ddlm}ddlm}i|_i|_i|_
i|_d|_d|j vr5ddi|_d|j ddi|_d	d
i|_
dd
i|_nLd|j vr3dd
i|_d	d
i|_
dd
i|_|j dd|_ntd��|j"�|j"�d|j$��}n|j$}dt&j(vrN|j+t&j(d�}|j,|k7�r/td|j,�d|�d���dt&j(v�r�dt&j(v�r�ddlm}ddlm}d}t&j6j9t&j(d�r;t;t&j(dd�5}	t=j>|	�}ddd�|r
|j@�s/|r/|jBr#|jDr|jG|��n�|jIt&j(ddg�}
|
jJd|k7rtd|
jJd�d|�d���i}dt&j(vrtMt&j(d�|d<dt&j(vrt&j(d|d<|
jNd2i|��}t;t&j(dd �5}	t=jP||	�ddd�|jR|k7r'td!|jR�d|�d���td"��|dd#|�$�|_*|jr|jd}n|jr
|j}nd%}|j6jWd&�}
|
D�]}|s�d'|zd(z|zd)z}|jTjY�jZd2|d*d+d,�|j�|j�|j�|j��j]�}|j_d-g�}ta|�dk(rh|d.|gd/�}|jc|j�|jTjY�jdd2|d0d1�|j��j]�}n|d}|d0}��||_3i|_4y#t$r}tdt|�����d}~wwxYw#1swY��-xYw#1swY���xYw)3Nr)�build)�CredentialsznGDrive backend requires Google API client installation.
Please read the manpage for setup details.
Exception: �driveID�corpora�drive�driveId�includeItemsFromAllDrivesT�supportsAllDrives�myDriveFolderID�userzVgdrive: backend requires a query paramater should either be driveID or myDriveFolderID�@�GOOGLE_SERVICE_JSON_FILEz(Service account email in the JSON file (z) does not match the URL (�)�GOOGLE_CLIENT_SECRET_JSON_FILE�GOOGLE_CREDENTIALS_FILE)�InstalledAppFlow)�Request�rbz*https://www.googleapis.com/auth/drive.file�	client_idzClient ID in the JSON file (�GOOGLE_OAUTH_LOCAL_SERVER_PORT�port�GOOGLE_OAUTH_LOCAL_SERVER_HOST�host�wbz#Client ID in the credentials file (zxGOOGLE_SERVICE_JSON_FILE or GOOGLE_CLIENT_SECRET_JSON_FILE environment variable not set. Please read the manpage to fix.�v3)�credentials�root�/�name = '�' and 'zR' in parents and mimeType = 'application/vnd.google-apps.folder' and trashed=false��files(name,id),nextPageToken)�q�pageSize�fields�filesz"application/vnd.google-apps.folder)�name�mimeType�parents�id)�bodyr+�)5�	duplicity�backend�Backend�__init__�googleapiclient.discoveryr	�google.oauth2.service_accountr
�ImportErrorr�str�shared_drive_corpora�shared_drive_id�shared_drive_flags_include�shared_drive_flags_support�shared_root_folder_id�
query_args�username�hostname�os�environ�from_service_account_file�service_account_email�google_auth_oauthlib.flowr�google.auth.transport.requestsr�path�exists�open�pickle�load�valid�expired�
refresh_token�refresh�from_client_secrets_file�
client_config�int�run_local_server�dumprr
�splitr,�list�execute�get�len�update�create�folder�id_cache)�self�
parsed_urlr	r
�err"rr�token�flow�	flow_args�parent_folder_id�folder_names�folder_namer)�results�	file_list�
file_metadatar^s                    �B/usr/lib/python3/dist-packages/duplicity/backends/gdrivebackend.pyr6zGDriveBackend.__init__#s������!�!�*�*�4��<�	�7�A�@%'��!�!���*,��'�*,��'�%)��"��
�-�-�-�)2�G�(<�D�%�$-�z�/D�/D�Y�/O�PQ�/R�#S�D� �/J�D�.Q�D�+�/B�D�.I�D�+�
�*�"7�"7�
7�)2�F�(;�D�%�/J�D�.Q�D�+�/B�D�.I�D�+�)3�)>�)>�?P�)Q�RS�)T�D�&�"�h��
����*�%�.�.�/�q��1D�1D�0E�F�I�"�+�+�I�%����3�%�?�?��
�
�Ke�@f�g�K��0�0�I�=�&�>�{�?`�?`�>a�b/�/8�k��<���
.����
;�@Y�]_�]g�]g�@g�B�>��K��w�w�~�~�b�j�j�)B�C�D��"�*�*�%>�?��F�5�%�"(�+�+�e�"4�K�5��k�&7�&7��;�#6�#6�;�;T�;T��'�'��	�2�+�D�D��
�
�#C�D�E�F��D�
�)�)�+�6�)�C�.�:�4�;M�;M�k�;Z�:[�\7�7@�k��D���
!#�I�7�2�:�:�E�,/��
�
�;[�0\�,]�	�&�)�7�2�:�:�E�,.�J�J�7W�,X�	�&�)�"7�$�"7�"7�"D�)�"D�K��"�*�*�%>�?��F�4�%��K�K��U�3�4��$�$�	�1�&�9�+�:O�:O�9P�Pj�kt�ju�uv�w���
#�D��
�
�7�D�k�B��
����#�3�3�I�>��
�
'�
'�#�9�9��%��"���,�,�S�1��'�+	,�K��������#�#�g�	g�
���
�
� � �"���	���9�		�
�/�/�	��*�*�
	��5�5�	��5�5�	����
� ���G�R�0�I��9�~��"�'� D� 0�1�!�
�
�$�$�T�%9�%9�:��D�J�J�$�$�&��V��*�#���9�9�	��W�Y��#�1���%�d�|��W+	,�Z'�����
��M�	�"����F�8���
��	��J5�5��44�4�s/�T�?U�<U
�	T=�!T8�8T=�U
�
Uc�p�ddlm}tj|�}||jvr�|j|}	|j
j
�jd|dd�|j��j�}|d|k(r>|ds9|dD]1}||jk(s�tjd|�d	|�d
��|cStjd|�d
|�d��|j|=d|�d|j�d�}|j
j
�jd|ddd�|j �|j"�|j$�|j��j�}|jdg�}	t'|	�dkDrtj(d|�d��nLt'|	�dkDr>|	dd}|	dd|j|<tjd|�d	|�d��|	dStjd|�d��y#|$r%}|jjdk7r�Yd}~��kd}~wwxYw)Nr��	HttpErrorzid,size,name,parents,trashed)�fileIdr+r-�trashedr/zGDrive backend: found file 'z
' with id z in ID cachei�zGDrive backend: invalidating 'z' (previously ID z) from ID cacher%r&z ' in parents and trashed = falsez!files(name,id,size),nextPageToken�)r)r+r*r,r'z'GDrive backend: multiple files called 'z'.r0z on server, adding to cachezGDrive backend: file 'z!' not found in cache or on serverr2)�googleapiclient.errorsrorC�fsdecoder_r
r,rZr>rYr^r�Info�resp�statusrXr;r<r=r[�
FatalError)
r`�filenamero�file_id�
drive_file�parent�errorr)rirjs
          rl�file_by_namezGDriveBackend.file_by_name�sl��4��;�;�x�(���t�}�}�$��m�m�H�-�G�
��D�J�J�$�$�&��S��&�=���9�9�	��W�Y���f�%��1�*�Y�:O�",�Y�"7�.��!�T�[�[�0��H�H�'C�H�:�Z�X_�W`�`l�%m�n�#-�-�.�
�H�H�5�h�Z�?P�QX�PY�Yh�i�j��
�
�h�'��x�j�����}�4T�U��
�D�J�J����
�T�	
��:��		
�
�+�+�	
��&�&�
	
��1�1�	
��1�1�	
��W�Y�	��K�K���,�	��y�>�A���N�N�D�X�J�b�Q�R�
��^�a�
���l�4�(�G�&/��l�4�&8�D�M�M�(�#��H�H�3�H�:�Z��y�Pk�l�m��Q�<�����)�(��3T�U�V���E�
��:�:�$�$��+��,��
�s$�A)H�$H�H�H5�H0�0H5c�4�|j|�}|�y|dS)N�r0)r~)r`ryr{s   rl�
id_by_namezGDriveBackend.id_by_names&���&�&�x�0�
�����d�#�#�c�F�ddlm}tj|�}|j	|�}|jd�rd}nd}tjj|j�}||jk\rd}d}nd}d}||j||�	�}	|��||jgd
�}
|
j|j�tjd|�d��|jj!�j"d|
|	d
�|j$��j'|��}nitjd|�d|d�d��|jj!�jd|	|dd�|j$��j'|��}|d|j(|<y)Nr)�MediaFileUploadz.gpgzapplication/pgp-encryptedz
text/plainT�F)�mimetype�	resumable)r-r/z#GDrive backend: creating new file '�')r1�
media_body)�num_retriesz)GDrive backend: replacing existing file 'z' with id 'r0)r�rpr2)�googleapiclient.httpr�rCrtr~�endswithrI�getsizer-�MIN_RESUMABLE_UPLOADr^r\r<rrur
r,r]r>rYr_)r`�source_path�remote_filenamer�r{�	mime_type�	file_sizer�r��mediarks           rl�_putzGDriveBackend._puts���8��+�+�o�6���&�&��7�
��#�#�F�+�3�I�$�I��G�G�O�O�K�$4�$4�5�	���1�1�1��I��K��I��K��� 0� 0�9�PY�Z����%4�$�+�+��O�M�� � ��!5�!5�6��H�H�:�?�:K�1�M�N���
�
� � �"����&�$���5�5�	���[��1�
�
�H�H�@��@Q�Q\�]g�hl�]m�\n�no�p�q���
�
� � �"����$�%�d�+���5�5�	���[��1�
�*4�D�)9��
�
�o�&r�c�n�ddlm}|j|�}|jj	�j
dd|di|j��}ttj|j�d�5}d}|||�}|dur|j�\}	}|dur�ddd�y#1swYyxYw)Nr)�MediaIoBaseDownloadrpr0r Fr2)r�r�r~r
r,�	get_mediar>rKrCrtr-�
next_chunk)
r`r��
local_pathr�r{�request�fh�done�
downloaderrws
          rl�_getzGDriveBackend._getBs���<��&�&��7�
�.�$�*�*�"�"�$�.�.�j�j��6F�j�$�Ji�Ji�j��
�"�+�+�j�o�o�.��
5�	7���D�,�R��9�J��%�-�)�4�4�6�����%�-�	7�	7�	7�s�:'B+�+B4c�B�d}g}	|jj�jdd|j�d�|jd|d�|j
�|j�|j�|j��j�}||jdg�z
}|jdd�}|�n��td�|D��}t|jj��D]*}||vs�|j|���|j|��,t|�S)	Nr�z' in parents and trashed=falser()r)r*r+�	pageTokenr,�
nextPageTokenc3�&K�|]	}|d���y�w)r-Nr2)�.0�items  rl�	<genexpr>z&GDriveBackend._list.<locals>.<genexpr>fs����=���V��=�s�r2)r
r,rXr^�	PAGE_SIZEr;r<r=r>rYrZ�setr_�keysr~�add)r`�
page_token�drive_files�response�	filenamesrys      rl�_listzGDriveBackend._listMs8���
������
�
� � �"���
��$�+�+��&D�E�!�^�^�9�(�
��/�/�
��*�*�
��5�5�
��5�5�
����
�
�8�<�<���4�4�K�!���o�t�<�J��!��)�,�=��=�=�	�
�T�]�]�/�/�1�2�	(�H��	�)��0A�0A�(�0K�0W��
�
�h�'�	(��I��r�c��|j|�}|dk(r-tjdtj|��d��y|j
j
�jdd|i|j��j�y)Nr�zFile 'z*' does not exist while trying to delete itrpr2)
r�r�WarnrCrtr
r,�deleter>rY)r`ryrzs   rl�_deletezGDriveBackend._deletepsk���/�/�(�+���b�=��H�H�v�b�k�k�(�3�4�4^�_�`�%�D�J�J����%�%�X�W�X��8W�8W�X�`�`�br�c�X�|j|�}|�d}d|iSt|d�}d|iS)N����size)r~rT)r`ryr{r�s    rl�_queryzGDriveBackend._querywsD���&�&�x�0�
����D���~���z�&�)�*�D���~�r�c���ddlm}ddlm}t	||�rt
jjSt	||�rt
jjSt
jjS)Nr)�RefreshErrorrn)
�google.auth.exceptionsr�rsro�
isinstancer�	ErrorCode�backend_not_found�backend_permission_denied�
backend_error)r`�	operationr}r�ros     rl�_error_codezGDriveBackend._error_codesL��7�4��e�Y�'��=�=�2�2�2�
��|�
,��=�=�:�:�:��}�}�*�*�*r�N)�__name__�
__module__�__qualname__�__doc__r�r�r6r~r�r�r�r�r�r�r�r2r�rlrrsC��;��I�*��k�Z:�x$�-:�^	7�!�Fc��+r�r�gdrive)
rCrL�duplicity.backendr3r�duplicity.errorsrr4r5r�register_backend�uses_netloc�extendr2r�rl�<module>r�se��*
�
���-�j+�I�%�%�-�-�j+�Z
���"�"�8�]�;�	�����$�$�h�Z�0r�

Zerion Mini Shell 1.0