o Ka.@s~ddlZddlZddlmZddlmZddlZddZddZdd Z d d Z d d Z Gdddej j Zej dedS)N)log)BackendExceptioncCs"d}|jD] }|jdkr|}q|S)NJotta)devicesname)jfsjottadevjr F/usr/lib/python3/dist-packages/duplicity/backends/jottacloudbackend.pyget_jotta_device"s   r cCst|}|jd}|S)NArchive)r mountPoints)rrroot_dirr r r get_root_dir*s rcCstd}|tt|dSNjottalib)logging getLoggersetLevelgetattr) log_levelloggerr r r set_jottalib_logging_level0s rcCs"td}|D]}||qdSr)rr addHandler)handlersrhandlerr r r set_jottalib_log_handlers5s  rcCstt}|dkr d}|S)zI Get the current duplicity log level as a stdlib-compatible logging levelNOTICEINFO)r LevelName getverbosity)duplicity_log_levelr r r get_duplicity_log_level;sr#c@sPeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dS)JottaCloudBackendz,Connect to remote store using JottaCloud APIcCstjj||zddlm}ddlm}m}Wn t y#t dwt }t |t tjj||_||jd|_td|jjdS)Nr)JFS)JFSNotFoundErrorJFSIncompleteFilezQJottaCloud backend requires jottalib (see https://pypi.python.org/pypi/jottalib)./z#Jottacloud folder for duplicity: %r) duplicitybackendBackend__init__rr% jottalib.JFSr&r' ImportErrorrr#rrr_loggerrclientget_or_create_directorypathlstripfolderDebug)self parsed_urlr%r&r'r"r r r r,Is    zJottaCloudBackend.__init__cCsDt|j}t|j|}z|j|WSty!||YSwN)rr0 posixpathjoinr2 getObjectr&mkdir)r6directory_nameroot_directory full_pathr r r r1as  z)JottaCloudBackend.get_or_create_directorycCs,|j||}td|j||fdS)Nzjottacloud.put(%s,%s): %s)r4upopenrr5r)r6 source_pathremote_filenamerespr r r _putiszJottaCloudBackend._putcCsx|jt|jj|}td||j|ft |jd}| D]}| |q"WddS1s5wYdS)Nzjottacloud.get(%s,%s): %swb) r0r;r9r:r4r2rr5rrAstreamwrite)r6rC local_path remote_fileto_filechunkr r r _getos  "zJottaCloudBackend._getcCstdd|jDS)NcSs$g|]}|s|jdkr|jqS) INCOMPLETE) is_deletedstater).0fr r r |s  z+JottaCloudBackend._list..)listr4filesr6r r r _listxszJottaCloudBackend._listcCs>t|jj|}|j|}td|t|f| dS)Nz#jottacloud.delete deleting: %s (%s)) r9r:r4r2r0r;rr5typedeleter6filename remote_pathrJr r r _deletes  zJottaCloudBackend._deletecCsTtd|t|jj|}z|j|}Wn ty$ddiYSwd|j iS)zGet size of filenamezQuerying size of %ssize) rInfor9r:r4r2r0r;r&r^rZr r r _querys  zJottaCloudBackend._querycCsdSr8r rVr r r _closeszJottaCloudBackend._closeN) __name__ __module__ __qualname____doc__r,r1rErMrWr]rarbr r r r r$Fs  r$ jottacloud)rr9r)rduplicity.errorsrduplicity.backendr rrrr#r*r+r$register_backendr r r r s   U