OpenS3 is a storage API that whilst presently contains its own API will eventually mimmic that of Amazon's S3 serivce.
The server is a pure rack application and can use any rack compatible server such as Thin or Unicorn. Authentication is currently token based.
The configuration is based on a YAML file:
--- dir: ./storage address: 0.0.0.0 port: 8000 token: TestKey server: thin
dir sets the data directory,
port sets the port where the server should
token sets the string which, after being SHA512'ed, will be the
address defines the interface to bind to, along with
specifying which rack compatible server to start with, by default Thin will be
You can also configure this via command line
opens3 -p 8000 -d ./storage -t SomeToken
But using a config file is highly recommended:
opens3 -c my_config_file.yml
The SHA512 token will be shown on the console on launch.
GET / for the upload form
GET /info for the info form, which only contains the hostname
POST /upload: You'll need to set the file to the
file param, the previously
mentioned token on the
token param and the
bucket param for the bucket
(it'll be auto created if it doesn't exists).
GET /list: You'll need to specify the
token param with the token and the
bucket param with the bucket you'd wish to list
GET /file: You'll need to specify a
name param with the wanted filename, a
bucket param with the bucket of the file, a
token param with the access
token, and a
expire param with the epoch time (
Time.now.to_i in Ruby) of
- 100: The path doesn't exists
- 101: The file was not found
- 102: The file already exists (not used since the upload replaces the current file)
- 103: Bucket not found
- 104: Bucket not specified
- 105: The link has expired
- 106: Wrong token
- 107: No file specified on the upload method
- 108: Incorrect method (verb)
All the responses will be on JSON format.
GET /info will return something like
GET /list will return an array with all the bucket files like
GET /file will automatically force the file download if all the params are correct
POST /upload will return this if the upload was correct
Any error will be in this format:
error_code will always be an Integer
This is presently alpha, it might contain bugs.
Copyright (C) 2012 Pablo Merino, Squeeks
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.