FenrirUnbound / catbox-s3

Amazon S3 adapter for catbox

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

catbox-s3

Amazon S3 adapter for catbox.

Maintainers Wanted Build Status Current Version

Options

  • bucket - the S3 bucket. You need to have write access for it.
  • accessKeyId - the Amazon access key.
  • secretAccessKey - the Amazon secret access key.
  • region - the Amazon S3 region. (If you don't specify a region, the bucket will be created in US Standard.)
  • endpoint - the S3 endpoint URL. (If you don't specify an endpoint, the bucket will be created at Amazon S3 using the provided region if any)
  • setACL - defaults to true, if set to false, not ACL is set for the objects
  • ACL - the ACL to set if setACL is not false, defaults to public-read
  • signatureVersion - specify signature version when using an S3 bucket that has Server Side Encryption enabled (set to either v2or v4).

Caching binary data

At the moment, Hapi doesn't support caching of non-JSONifiable responses (like Streams or Buffers, see #1948). If you want to use catbox-s3 for binary data, you have to handle it manually in your request handler:

var Catbox = require('catbox');

// On hapi server initialization:
// 1) Create a new catbox client instance
var cache  = new Catbox.Client(require('catbox-s3'), {
    accessKeyId     : /* ... */,
    secretAccessKey : /* ... */,
    region          : /* ... (optional) */,
    bucket          : /* ... */
});

// 2) Inititalize the caching
cache.start(function (err) {

    if (err) { console.error(err); }
    /* ... */
});

// Your route's request handler
var handler = function (request, reply) {

    var cacheKey = {
        id      : /* cache item id */,
        segment : /* cache segment name */
    };

    cache.get(cacheKey, function (err, result) {

        if (result) {
            return reply(result.item).type(/* response content type */);
        }

        yourBusinessLogic(function (err, data) {

            cache.set(cacheKey, data, /* expiration in ms */, function (err) {

                /* ... */
            });
            reply(result.item).type(/* response content type */);
        });
    });
};

Running tests

In order to run the tests, set the aforementioned options as environment variables:

S3_ACCESS_KEY=<YOURKEY> S3_SECRET_KEY=<YOURSECRET> S3_REGION=<REGION> S3_BUCKET=<YOURBUCKET> npm test

License

MIT

About

Amazon S3 adapter for catbox

License:MIT License


Languages

Language:JavaScript 100.0%