Skip to main content

A simple and easy to use async wrapper for Backblaze's B2 bucket API.

Project description

aiob2


Python Version Build PyPi License

aiob2 is an asynchronous API wrapper for the Backblaze B2 Bucket API.

It will allow you to interact with your B2 bucket, it's files and anything else that the B2 API allows in a modern, object-oriented fashion.

NOTE: This API wrapper is by no means complete and has many endpoints to cover, though the main ones have been covered (they will be listed below)

Installation


aiob2 is compatible with Python 3.8+ (this is an estimate). To install aiob2, run the following command in your (virtual) environment.

pip install aiob2

Alternatively, for the latest though least stable version, you can download it from the GitHub repo:

pip install git+https://github.com/Void-ux/aiob2.git

Usage

Uploading

import aiohttp
import asyncio

from aiob2 import B2ConnectionInfo, Client

# Construct our connection info
conn_info = B2ConnectionInfo('key_id', 'app_id')

# Our image to upload to our bucket
with open(r'C:\Users\MS1\Pictures\Camera Roll\IMG_5316.jpeg', 'rb') as file:
    data = file.read()

async def main():
    async with aiohttp.ClientSession() as s:
        client = Client(conn_info)
        file = await client.upload_file(
            content_bytes=data,
            content_type='image/jpeg',
            file_name='test.jpg',
            bucket_id='bucket_id',
        )


if __name__ == '__main__':
    asyncio.run(main())

And that's it! upload_file() returns a File object that neatly wraps everything Backblaze's API has provided us with. The File object has the following attributes:

- account_id: str
- action: str
- bucket_id: str
- content_length: int
- content_sha1: str
- content_md5: str
- content_type: str
- id: str
- info: dict
- name: str
- retention: dict
- legal_hold: dict
- server_side_encryption: dict
- upload_timestamp: datetime.datetime

You can visit the bucket.py file to view the source code of this class.

Deleting

# We can remove the boilerplate code and get straight to the method
deleted_file = await client.delete_file(file_name='file_name', file_id='file_id')

This will return a DeletedFile object, it has the following attributes:

- name: str
- id: str

Downloading

Downloading a file can be done either with the name or the id of it.

# We can remove the boilerplate code and get straight to the method
downloaded_file = await client.download_file_by_name(file_name='file_name', bucket_name='bucket_name')
downloaded_file = await client.download_file_by_id(file_id='file_id')

This will return a DownloadedFile object with the following attributes:

- name: str
- id: str
- content_sha1: str
- upload_timestamp: datetime.datetime
- accept_ranges: str
- content: bytes
- content_type: str
- content_length: str
- date: str

NOTE: There are many kwargs you can provide when downloading a file, it's recommended to take a look at the source code to see if any can benefit you and your usecase.

License


This project is released under the MIT License.

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

aiob2-0.4.0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiob2-0.4.0-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file aiob2-0.4.0.tar.gz.

File metadata

  • Download URL: aiob2-0.4.0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.2 Windows/10

File hashes

Hashes for aiob2-0.4.0.tar.gz
Algorithm Hash digest
SHA256 f46135ec1ce7bfb12b32926ab6cbdfa2548b6f5f619685c073da4c4b57ada61c
MD5 8edf4e8edd9f36079ef4a61aaf2e8395
BLAKE2b-256 c2a457a2d6e24dbd7149874efcea2a3f2535cc43d1e34812c07128c1d38d34be

See more details on using hashes here.

File details

Details for the file aiob2-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: aiob2-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.2 Windows/10

File hashes

Hashes for aiob2-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dbb58da5247847a442ffb7a14a2966bf7e6ee8f6c3c78e5e05286f7a7d733baf
MD5 f95c3a316423b1f4dfe5f105d75654c8
BLAKE2b-256 34728414667482edc54f9b463687ee8af9ac16c653492ccf3031f57d40bbc7a5

See more details on using hashes here.

Supported by

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