DRACOON API connector for 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 --index-url https://test.pypi.org/simple/ --no-deps dracoon-UNBEKANNTES-PFERD
Prerequisites
You will need a working Python 3 installation - check your version:
- Python
python3 --version
Installation
- Install the package from TestPyPi
python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps dracoon-UNBEKANNTES-PFERD
Please note: this package will also be provided via official PyPi soon.
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
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.
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)
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
- Distribute package via official PyPi
- 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.