Poto
Turn your AWS S3 bucket into an image gallery.
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
- Fork it ( https://github.com/[my-github-username]/poto/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request