Skip to main content

Flask-Storage utils for Amazon S3.

Project description

Flask-Storage utils for:

  • signing Amazon S3 POST requests

  • validating Amazon S3 files

Installation

Install with pip:

pip install Pontus

Dependencies

Pontus has the following dependencies:

Moreover python-magic depends on the libmagic file type identification library.

Examples

Signed POST request

Creating form fields for a signed Amazon S3 POST request:

from pontus import AmazonS3SignedRequest

signed_request = AmazonS3SignedRequest(
    key='images/my-image.jpg',
    mime_type='image/jpeg',
    storage=storage,
    randomize=True
)

signed_request.form_fields

# {
#     'AWSAccessKeyId': 'your-aws-access-key-id',
#     'success_action_status': '201',
#     'acl': 'private',
#     'key': u'f6c157e1-1a1a-4418-99fe-3362dcf7b1ea/images/my-image.jpg',
#     'Signature': 'generated-signature',
#     'Policy': 'generated-policy-document'
# }

These form fields can be used to POST files to Amazon S3 as described in Amazon’s documentation.

Amazon S3 file validation

Validating that an image file is less than 2MB and is of image/jpeg MIME type:

from pontus import AmazonS3FileValidator
from pontus.validators import FileSize, MimeType

validator = AmazonS3FileValidator(
    key='images/my-image.jpg',
    storage=storage,
    validators=[FileSize(max=2097152), MimeType('image/jpeg')]
)

if validator.validate():
    # File is <2MB image/jpeg
    pass
else:
    # File was invalid, printing errors
    print validator.errors

Validators can either be instances of a class inheriting pontus.validators.BaseValidator or callable functions that take storage_file as a parameter:

from pontus.exceptions import ValidationError
from pontus.validators import BaseValidator

def name_starts_with_images(storage_file):
    if not storage_file.name.startswith('images/'):
        raise ValidationError()

# OR

class NameStartsWith(BaseValidator):
    def __init__(self, starts_with_str):
        self.starts_with_str = starts_with_str

    def __call__(self, storage_file):
        if not storage_file.name.startswith(starts_with_str):
            raise ValidationError()

name_starts_with_images = NameStartsWith('images/')

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

Pontus-0.1.0.tar.gz (5.3 kB view details)

Uploaded Source

File details

Details for the file Pontus-0.1.0.tar.gz.

File metadata

  • Download URL: Pontus-0.1.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Pontus-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1aae52c3b993a7bb84eaf232c6c50fb28c18fef5211e0c46efe39a836e52e413
MD5 fb242fd491ea674c53fd3f5c3a10e93d
BLAKE2b-256 e67c787773f90ada844759f8ff856635c8f90796ecf2e68deac9d342b89bb23c

See more details on using hashes here.

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