File: //usr/lib/python3/dist-packages/duplicity/backends/__pycache__/gdocsbackend.cpython-310.pyc
o
�~�_�$ � @ s� d dl mZ d dlmZ e�� d dlmZ d dlmZ d dlZ d dl
Z
d dlZd dl
Zd dlZd dlZd dlmZ d dlmZ G dd � d ejj�Z ej�d
e� ejj�d
g� dS )� )�print_function)�standard_library)�input)�strN)�__version__)�BackendExceptionc @ sT e Zd ZdZdZdZdd� Zdd� Zdd � Zd
d� Z dd
� Z
ddd�Zddd�ZdS )�GDocsBackendz>Connect to remote store using Google Google Documents List APIz
folder%3Arootzapplication/binaryc
C sZ t jj�| |� zdd ladd ladd ladd l aW n t
y. } ztdt|� ��d }~ww tj
jjdt d�| _d| j_d| jj_| �|jd |j | �� � t�|jdd � d �}d }tj}|D ]D}| �|d
|�}|d ur�t|�dkr{|d }nt|�dkr�tj
jj d
|d�}| jj!||d�}nd }|r�|j"j#}qctd
| ��td| ��|| _$d S )Nr z�Google Docs backend requires Google Data APIs Python Client Library (see http://code.google.com/p/gdata-python-client/).
Exception: %s�duplicity %s)�sourceTF�@� �/�folder)�type�title)�
collectionz-Error while creating destination folder '%s'.z-Error while fetching destination folder '%s'.)%� duplicity�backend�Backend�__init__� atom.data�atom�gdata.client�gdata�gdata.docs.client�gdata.docs.data�ImportErrorr r �docs�client�
DocsClientr �ssl�http_client�debug�
_authorize�username�hostname�get_password�string�split�pathr �ROOT_FOLDER_ID�_fetch_entries�len�data�Resource�create_resource�resource_id�textr ) �self�
parsed_url�e�folder_names�
parent_folder�parent_folder_id�folder_name�entriesr � r: �A/usr/lib/python3/dist-packages/duplicity/backends/gdocsbackend.pyr + sB ���
zGDocsBackend.__init__c C s� | � |� |�� }tjj| j|tjtj� |j
�tjjjtjj
jd�}|rPtjj
jtj
j|d�d�}| j�� jd }|j||d�}|sOtd|�� | jjjf ��n
td|�� | jjjf ��|�� rcJ �d S )N)�
chunk_size�
desired_class)r1 )r z?convert=false)�entryz0Failed to upload file '%s' to remote folder '%s'z>Failed to initialize upload of file '%s' to remote folder '%s')�_delete�openr r �ResumableUploaderr �BACKUP_DOCUMENT_TYPE�osr) �getsize�name�DEFAULT_CHUNK_SIZEr r- r. r �Titler �get_resumable_create_media_link�href�
UploadFiler �get_filenamer r1 �close)r2 �source_path�remote_filename�file�uploaderr>