Skip to main content

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

Project description

aiob2


Python Version 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.10+ (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, bucket

# 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:
        await bucket.upload_file(
            content_bytes=data,
            content_type='image/jpeg',
            file_name='home.jpeg',
            session=s,
            bucket_id='bucket_id',
            conn_info=conn_info
        )


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
action
bucket_id
content_length
content_sha1
content_md5
content_type
file_id
file_info
file_name
file_retention
legal_hold
server_side_encryption
upload_timestamp

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
from aiob2 import bucket

await bucket.delete_file(
    file_name='home.jpeg',
    file_id='4_z275c6d8d808e543872cc0215_f11088ad8814ee120_d20220514_m211709_c002_v0001096_t0019_u01652563029709',
    conn_info=conn_info,
    session=s
)

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

file_name
file_id

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.2.0.tar.gz (8.0 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.2.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aiob2-0.2.0.tar.gz
  • Upload date:
  • Size: 8.0 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.2.0.tar.gz
Algorithm Hash digest
SHA256 7267979c00cbf8ade8393a74318a11175d18aebdf9d4478572bebe6626b3f136
MD5 19d26d3e3e083a9d5e9f4ea342d0d047
BLAKE2b-256 72f36b3c6e4825879d816fd2f6d41f1f53a1e8dbbbb984aa536900c4ee4dd605

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aiob2-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d4d3e897ce73e35ba85c6e06647ebd21e5d00a01bffc19b8a1e736a025957230
MD5 5d97ad28f629bd1e56b6ff8015ff4acb
BLAKE2b-256 2b95460ab41e203d2aee5140948807f1f8f6ddcd313fc22cd1e35de26c1faa4e

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