Skip to main content

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

  1. 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

  1. 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
  1. 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:

Send async requests

  1. 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
  1. 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


Download files

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

Source Distribution

dracoon-0.4.3.tar.gz (20.7 kB view hashes)

Uploaded Source

Built Distribution

dracoon-0.4.3-py3-none-any.whl (26.4 kB view hashes)

Uploaded Python 3

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