A simple and easy to use async wrapper for Backblaze's B2 bucket API.
Project description
aiob2
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():
client = Client(conn_info)
file = await client.upload_file(
content_bytes=data,
content_type='image/jpeg',
file_name='test.jpg',
bucket_id='bucket_id',
)
await client.close()
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.
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
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aiob2-0.4.3.tar.gz.
File metadata
- Download URL: aiob2-0.4.3.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.2 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72ea6ef853fa996c133e48affea1e9377eeee921ff88bf634ea834240bacca0e
|
|
| MD5 |
69f8b21b7d64c599171b869bcb00a523
|
|
| BLAKE2b-256 |
676e4116cb8511cd8c1e7a16eefe1dde91fd781e240ab94ab177fe603f6c8b81
|
File details
Details for the file aiob2-0.4.3-py3-none-any.whl.
File metadata
- Download URL: aiob2-0.4.3-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.2 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c2c678f6deee11d746474da586b06b9e5b86a0703868eef7dfb5656f459b662
|
|
| MD5 |
f4ab5ac8b3205af473726df8f987241c
|
|
| BLAKE2b-256 |
96fc54a3e0177c1bf0c3aa944d239d69d3af943b7543c2439b83480e7f4f1bde
|