o `@sbdZddlmZddlZddlZddlmZddlmZdZ Gdddej j Z ej d e dS) zMediaFire Duplicity Backend)strN)util)BackendException45593c@sTeZdZdZddZdddZddZd d Zd d Zd dZ ddZ dddZ dS)MediafireBackendzSUse this backend when saving to MediaFire URLs look like mf:/root/folder. c Cszddl}Wnty}ztdt|d}~wwtjj|||j}| }|j j |_ |j j |_|j j|_|j j|_|j |_ |j jt||dd|jddd}z|j |}t||jsitdWn|j jy|j j|dd }|j j|d d Ynw||_dS) Nrz?Mediafire backend requires the mediafire library. Exception: %s)app_idemailpasswordzmf:////z-target_url already exists and is not a folderT) recursiveprivate)privacy)mediafire.client ImportErrorrr duplicitybackendBackend__init__username get_passwordclientFile _file_resFolder _folder_res DownloadError_downloaderror_excResourceNotFoundError _notfound_excMediaFireClientloginDUPLICITY_APP_IDpathsplitget_resource_by_uri isinstance create_folderupdate_folder_metadatafolder)self parsed_url mediafireemediafire_emailmediafire_passwordurir)r1E/usr/lib/python3/dist-packages/duplicity/backends/mediafirebackend.pyr's>         zMediafireBackend.__init__NcCsd|dur tj|j}||}|j|j|d|WddS1s+wYdS)z Upload fileNrb) osr#basenamename _build_urirupload_session upload_fileopen)r* source_pathremote_filenamer0r1r1r2_putPs   "zMediafireBackend._putc CsH||}z |j||dWdS|jy#}zt|d}~ww)z Download filewbN)r7r download_filer:rr)r*filename local_pathr0exr1r1r2_get[s zMediafireBackend._getcCsD|}g}|j|D]}t||jsq ||ddq |S)zList files in backup directoryr@zutf-8)r7rget_folder_contents_iterr&rappendencode)r*r0 filenamesitemr1r1r2_listcs zMediafireBackend._listcCs ||}|jj|tjddS)zDelete single file)purgeN)r7r delete_fileconfigmf_purge)r*r@r0r1r1r2_deleteos zMediafireBackend._deletecCs|D]}||qdS)zDelete list of filesN)rN)r* filename_listr@r1r1r2 _delete_listts zMediafireBackend._delete_listcCsL||}z|j|}t|d}Wd|iS|jy%d}Yd|iSw)zStat the remote filesize)r7rr%intr)r*r@r0resourcerQr1r1r2_queryys  zMediafireBackend._querycCsd|jddt|S)zBuild relative URIzmf: folderkeyr )r)rfsdecode)r*r@r1r1r2r7s  zMediafireBackend._build_uri)N)rV) __name__ __module__ __qualname____doc__rr=rCrIrNrPrUr7r1r1r1r2r"s )   rmf)r\builtinsrr4duplicity.backendrrduplicity.errorsrr"rrrregister_backendr1r1r1r2s   k