DRACOON API wrapper in Python
Project description
DRACOON-PYTHON-API
Python connector to DRACOON API
Explore the docs »
Report Bug
Table of Contents
About The Project
Disclaimer: this is an unofficial repo and is not supported by DRACOON
This package provides a connector to DRACOON API.
DRACOON is a cloud storage product / service (SaaS) by DRACOON GmbH (http://dracoon.com).
DRACOON API documentation can be found here (Swagger UI):
https://dracoon.team/api/
Built With
Getting Started
To get started, create a virtual environment in Python and install the dracoon package:
virtualenv <DIR>
source <DIR>/bin/activate
python3 -m pip install dracoon
Prerequisites
You will need a working Python 3 installation - check your version:
- Python
python3 --version
Installation
- Install the package from PyPi
python3 -m pip install dracoon
Usage
Import required modules
from dracoon import core, users
Modules are named after API endpoints (see documentation for further details).
Exception: core module - this is required to create Dracoon object and to send authenticated requests to the API.
Object creation
my_dracoon = core.Dracoon(clientID, clientSecret)
my_dracoon.set_URLs(baseURL)
Please note: providing a client secret is optional (in order to use with OAuth apps that don't have one).
- clientID; please register your OAuth app or use dracoon_legacy_scripting
- clientSecret; please register your OAuth app or use dracoon_legacy_scripting
- baseURL: Your DRACOON URL instance (e.g. https://dracoon.team)
Authentication
Password flow
login_response = my_dracoon.basic_auth(username, password)
Please note: you can only authenticate if OAuth app is correctly configured. Only local accounts can be used via password flow.
Authorization code flow
print(my_dracoon.get_code_url())
auth_code = 'Your auth code' # input('Enter auth code:')
login_response = my_dracoon.oauth_code_auth(username, password)
Please note: you can only authenticate if OAuth app is correctly configured. You will need a custom app with authorization code enabled and you will need to set your redirect uri to https://your.domain.com/oauth/callback
Send requests
- First you will need to build a request with specific parameters:
r = users.get_users(offset=0, filter=f)
Please note:
- GET requests are limited to returning 500 items. Therefore all such requests contain an offset parameter (default is 0)
- Providing a filter is optional - see API documentation and examples on usage
- Sorting not implemented - sorting results should occur via client
- you can then send the request as an authenticated user
user_response = my_dracoon.get(r)
Supported request types:
- GET (object.get(request))
- POST (oject.post(request))
- PUT (object.put(reqest))
- DELETE (object.delete(request))
For examples, check out the example files:
- DRACOON authentication
- Export user list to CSV
- Import users from CSV
- Export room permissions to CSV
- Export room log to CSV
- Upload files (generate room logs for root rooms and upload them to target room)
- Create personal rooms
- Bulk update file metadata (epiration example)
- Bulk room config (recycle bin period example)
- Convert folders into rooms with inheritance
Send async requests
- First you will need to build a request with specific parameters:
r = users.get_users(offset=0, filter=f)
Please note:
- GET requests are limited to returning 500 items. Therefore all such requests contain an offset parameter (default is 0)
- Providing a filter is optional - see API documentation and examples on usage
- Sorting not implemented - sorting results should occur via client
- you will need to call async requests inside an async function (e.g. main()) and pass a client session
async with aiohttp.ClientSession() as session:
user_response = await my_dracoon.async_get(r, session)
Supported request types:
- GET (object.async_get(request, session))
- POST (oject.async_post(request, session))
- PUT (object.async_put(reqest, session))
- DELETE (object.async_delete(request, session))
For examples, check out the example file:
Roadmap
- Implement workflows (based on examples - e.g. user csv import, log csv export, file upload)
- Implement CLI for workflows
- Implement refresh token storage
- Update examples to async
License
Distributed under the Apache License. See LICENSE for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.