One lib to sign them all.
Project description
Signa
Utility lib to create authorized requests for various services.
Supported services:
- AWS S3
- Digital Ocean Spaces
- Yandex Object storage
- Alibaba Cloud OSS
Currently in alpha, use with caution!
Install
pip install signa
Usage example
import os
import requests
import signa
AWS_S3_REGION = '...'
AWS_S3_BUCKET = '...'
AWS_S3_UPLOAD_ACCESS_KEY = '...'
AWS_S3_UPLOAD_SECRET_KEY = '...'
S3_SIGNA = signa.Factory(
's3',
region=AWS_S3_REGION,
bucket=AWS_S3_BUCKET,
payload='UNSIGNED-PAYLOAD',
auth={
'access_key': AWS_S3_UPLOAD_ACCESS_KEY,
'secret_key': AWS_S3_UPLOAD_SECRET_KEY,
})
CONTENT_TYPES = {
'.jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.png': 'image/png',
'.mp4': 'video/mp4',
'.json': 'application/json',
}
def put_file(*, key=None, path_or_data=None, make_public=True,
s3_signa=S3_SIGNA):
"""Put file to S3 with signa example. Return uploaded URL.
"""
ext = os.path.splitext(key)[1]
headers = {
'content-type': CONTENT_TYPES.get(ext, 'application/octet-stream')
}
if make_public:
headers['x-amz-acl'] = 'public-read'
signed = s3_signa.new(method='PUT', key=key, headers=headers)
if isinstance(path_or_data, str):
path = path_or_data
with open(path, 'rb') as data_fp:
response = requests.put(signed['url'],
headers=signed['headers'],
data=data_fp)
else:
data = path_or_data
response = requests.put(signed['url'],
headers=signed['headers'],
data=data)
if response.status_code == 200:
print('put_file: OK')
return signed['url']
return None
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
signa-0.3.0.tar.gz
(7.7 kB
view details)
Built Distribution
signa-0.3.0-py3-none-any.whl
(9.1 kB
view details)
File details
Details for the file signa-0.3.0.tar.gz
.
File metadata
- Download URL: signa-0.3.0.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81bec5ed8464d0876bb593a4c9376d49ecfff9e8a25178f00a348a7fe32ac335 |
|
MD5 | 711986e62af813835aa53e238fe2da57 |
|
BLAKE2b-256 | 0d1926836e4dcce472ba83d9e8460118859985294f7f2c3879298b96d47f5aa3 |
File details
Details for the file signa-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: signa-0.3.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43d74a7866b3be7402d5be9eb65c8ea10aa744dbdfbd8da6979bf326d8e18dfb |
|
MD5 | a78150fd1aaf0ae23369d1d9c1ed9a38 |
|
BLAKE2b-256 | eb4ba1370f3eb7fcc807905551b25a21684c3e0a73e3e2d8c68f0285cfe03029 |