All Projects → jamesmoriarty → poto

jamesmoriarty / poto

Licence: MIT license
multi cloud storage to image gallery + image proxy + file api - 350 LOC.

Programming Languages

ruby
36898 projects - #4 most used programming language
HTML
75241 projects
Dockerfile
14818 projects
shell
77523 projects

Projects that are alternatives of or similar to poto

Goofys
a high-performance, POSIX-ish Amazon S3 file system written in Go
Stars: ✭ 3,932 (+19560%)
Mutual labels:  s3, cloud-storage
Go Storage
An application-oriented unified storage layer for Golang.
Stars: ✭ 87 (+335%)
Mutual labels:  s3, cloud-storage
S3fs Fuse
FUSE-based file system backed by Amazon S3
Stars: ✭ 5,733 (+28565%)
Mutual labels:  s3, cloud-storage
rclone-drive
☁️Simple web cloud storage based on rclone, transform cloud storage (s3, google drive, one drive, dropbox) into own custom web-based storage
Stars: ✭ 30 (+50%)
Mutual labels:  s3, cloud-storage
cottoncandy
sugar for s3
Stars: ✭ 33 (+65%)
Mutual labels:  s3, cloud-storage
Rclone
"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files
Stars: ✭ 30,541 (+152605%)
Mutual labels:  s3, cloud-storage
Minio Hs
MinIO Client SDK for Haskell
Stars: ✭ 39 (+95%)
Mutual labels:  s3, cloud-storage
Cloudexplorer
Cloud Explorer
Stars: ✭ 170 (+750%)
Mutual labels:  s3, cloud-storage
Droppy
**ARCHIVED** Self-hosted file storage
Stars: ✭ 1,564 (+7720%)
Mutual labels:  image-gallery, cloud-storage
Sftpgo
Fully featured and highly configurable SFTP server with optional HTTP, FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob
Stars: ✭ 3,534 (+17570%)
Mutual labels:  s3, cloud-storage
go-drive
A simple cloud drive mapping web app supports local, FTP/SFTP, S3, OneDrive, WebDAV, Google Drive.
Stars: ✭ 184 (+820%)
Mutual labels:  s3, cloud-storage
backblaze
Backblaze.Agent is a high-performance .NET Core implementation of the Backblaze B2 Cloud Storage API.
Stars: ✭ 32 (+60%)
Mutual labels:  s3, cloud-storage
go-storage
A vendor-neutral storage library for Golang: Write once, run on every storage service.
Stars: ✭ 387 (+1835%)
Mutual labels:  s3, cloud-storage
mining-camp
Easy automated configuration and deployment of Minecraft servers on AWS spot instances, featuring automatic backups and restoration using S3.
Stars: ✭ 43 (+115%)
Mutual labels:  s3
reaction-file-collections-sa-s3
An S3 storage adapter for Reaction Commerce's reaction-file-collections
Stars: ✭ 14 (-30%)
Mutual labels:  s3
react-relay-appsync
AppSync for Relay
Stars: ✭ 19 (-5%)
Mutual labels:  s3
gosquito
gosquito ("go" + "mosquito") is a pluggable tool for data gathering, data processing and data transmitting to various destinations.
Stars: ✭ 25 (+25%)
Mutual labels:  s3
tech1-temple-aws
AWS Proofs of Concepts repository. No Longer Supported
Stars: ✭ 32 (+60%)
Mutual labels:  s3
tidysq
tidy processing of biological sequences in R
Stars: ✭ 29 (+45%)
Mutual labels:  s3
simple-flask-s3-uploader
Simple and easy to use Flask app to upload files to Amazon S3. Based on Python, Flask, and using Boto3. Securely storing your AWS credentials as environment variables. Quick AWS S3 Flask uploader example.
Stars: ✭ 24 (+20%)
Mutual labels:  s3

Code Climate Test Coverage Build Status

Poto

Turn your AWS S3 bucket into an image gallery.

Demo GIF

Example: http://jamesmoriarty-poto-aws-s3.herokuapp.com/

Usage

S3

$ PORT=? AWS_ACCESS_KEY_ID=? AWS_SECRET_ACCESS_KEY=? AWS_REGION=? AWS_S3_BUCKET=? poto-aws-s3

Google Cloud Storage

$ PORT=? GOOGLE_CLOUD_PROJECT_ID=? GOOGLE_CLOUD_KEYFILE=? GOOGLE_CLOUD_STORAGE_BUCKET=? poto-google-cloud-storage

Poto::ImageProxy

The image resizing proxy is rack middleware and can be used standalone.

require "poto"

# width  - max width in pixels.
# height - max height in pixels.
# src    - source image url.
#
# Examples
#
# GET /image_proxy?width=500&height=500&src=https%3A%2F%2Faqueous-cliffs-6127.herokuapp.com%3A443%2Fapi%2Ffiles%2FRGVhdGggVmFsbGV5LmpwZw%3D%3D%250A

map("/image_proxy") do
  run Poto::ImageProxy
end

Poto::API

As well as the API - query and access the storage backend via hal+json.

require "poto"
require "poto/file_repository/aws/s3"

# Examples
#
# GET /files&per_page=9
# {
#     "_embedded": {
#         "files": [{
#             "name": "Abstract.jpg",
#             "size": 15198281,
#             "_links": {
#                 "file": {
#                     "href": "https://aqueous-cliffs-6127.herokuapp.com:443/api/files/QWJzdHJhY3QuanBn%0A"
#                 }
#             }
#         }]
#     },
#     "_links": {
#         "self": {
#             "href": "https://aqueous-cliffs-6127.herokuapp.com:443/api/files?page="
#         },
#         "next": {
#             "href": "https://aqueous-cliffs-6127.herokuapp.com:443/api/files?page=Death+Valley.jpg&per_page=9"
#         }
#     }
# }

repository = Poto::FileRepository::AWS::S3.new(bucket: ENV["AWS_S3_BUCKET"])

map("/api") do
  run Poto::API.configure(repository: repository)
end

Installation

$ gem install poto

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release to create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

  1. Fork it ( https://github.com/[my-github-username]/poto/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].