Skip to main content

A straight-forward WebDAV client, ported from easywebdav to use aiohttp.

Project description

This project started as a port of the requests-based EasyWebDAV ( http://github.com/amnong/easywebdav ) to asyncio on Python 3.5. It has since been extended with additional features.

Features

  • Basic authentication

  • Creating directories, removing directories and files

  • Uploading and downloading files

  • Directory listing

  • Support for client side SSL certificates

  • Fragmented download (multiple chunks in simultaneous streams)

  • MD5 checksum validation when used with OwnCloud/Nextcloud webdav

  • Progress tracking/reporting via callback system

Installation

Install using distribute:

pip install aioeasywebdav

Quick Start

import aioeasywebdav
loop = asyncio.get_event_loop()

# Start off by creating a client object. Username and
# password may be omitted if no authentication is needed.
webdav = aioeasywebdav.connect('webdav.your-domain.com', username='myuser', password='mypass')

# Do some stuff:
loop.run_until_complete(webdav.mkdir('some_dir'))
loop.run_until_complete(webdav.rmdir('another_dir'))

async def fn():
    await webdav.download('/remote/path/to/file', '/local/target/file')
    await webdav.upload('/local/path/to/file', '/remote/target/file')
loop.run_until_complete(fn())

Client object API

The API is pretty much self-explanatory:

cd(path)
ls(path=None)
exists(remote_path)
mkdir(path, safe=False)
mkdirs(path)
rmdir(path, safe=False)
delete(file_path)
upload(local_path_or_fileobj, remote_path)
download(remote_path, local_path)

Using clientside SSL certificate

webdav = aioeasywebdav.connect('secure.example.net',
                               username='user',
                               password='pass',
                               protocol='https',
                               cert="/path/to/your/certificate.pem")
# Do some stuff:
print(await webdav.ls())

Please note that all options and restriction regarding the “cert” parameter from Requests API apply here as the parameter is only passed through!

Developing aioEasyWebDAV

Working with a virtual environment is highly recommended:

virtualenv --no-site-packages aioeasywebdav_dev
source aioeasywebdav_dev/bin/activate

Installing the library in development-mode:

EASYWEBDAV_DEV=1 python setup.py develop

The first part of the command causes setup.py to install development dependencies, in addition to the normal dependencies.

Running the tests:

nosetests --with-yanc --nologcapture --nocapture tests

Running the tests with WebDAV server logs:

WEBDAV_LOGS=1 nosetests --with-yanc --nologcapture --nocapture -v tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aioeasywebdav-2.3.0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

aioeasywebdav-2.3.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file aioeasywebdav-2.3.0.tar.gz.

File metadata

File hashes

Hashes for aioeasywebdav-2.3.0.tar.gz
Algorithm Hash digest
SHA256 9b57e6a56ad092c71379105c08eec69b68964e1722959767559e0e4854c4c30b
MD5 de0fb0d26e82127c3c90d697e1eebd3b
BLAKE2b-256 a1a52538b9e430a1430056c039a7e0efad5beeb9468db388c50139b419765012

See more details on using hashes here.

File details

Details for the file aioeasywebdav-2.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for aioeasywebdav-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c4e25a76b22160ac2c02eee50e362f8bed5c3eea0528a17b3d9c657c11166ba9
MD5 d4db440f0e2d77bdc9b4233b31059abc
BLAKE2b-256 e8a5a6ba8b485cdc9a27c32f2989f3f703fceef1908cba0bfe13474544845564

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page