Skip to content

Connect your Flask app to S3, Alicloud, or Heroku, with a clean common interface.

License

Notifications You must be signed in to change notification settings

augustjd/flask-warehouse

Repository files navigation

Flask-Warehouse

Simple cloud file storage for Flask applications on platforms like S3, Alicloud, or Heroku.

import os

from flask import Flask
from flask_warehouse import Warehouse

# 1. Configuring Warehouse
app = Flask(__name__)
app.config['WAREHOUSE_DEFAULT_SERVICE'] = 's3'          # or 'file' for filesystem
app.config['WAREHOUSE_DEFAULT_LOCATION'] = 'us-west-1'  # required for 's3'
app.config['WAREHOUSE_DEFAULT_BUCKET'] = None


app.config['AWS_ACCESS_KEY_ID'] = '...'                 # required for 's3'
app.config['AWS_SECRET_ACCESS_KEY'] = '...'             # required for 's3'

warehouse = Warehouse(app)

# Object-oriented approach:
bucket = warehouse.bucket('mybucket')
oo_cubby = bucket.cubby('keys')

# Or compact approach:
compact_cubby = warehouse('s3:///mybucket/keys')

assert oo_cubby == compact_cubby

cubby = oo_cubby

# 2. Writing to/from bytes
contents = b'12345'
cubby.store(bytes=contents)

assert cubby.filesize() == 5

cubby_contents = cubby.retrieve()
assert cubby_contents == contents

# 3. Writing to/from files
filepath = "local.txt"
with open(filepath, 'wb') as f:
    f.write(b"Here are the contents of a file.")

cubby.store(filepath=filepath)
assert os.path.getsize(filepath) == cubby.filesize()

assert cubby.retrieve() == open(filepath, 'rb').read()
```

About

Connect your Flask app to S3, Alicloud, or Heroku, with a clean common interface.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •