-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ef6f38c
commit 0e04362
Showing
9 changed files
with
2,424 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -59,3 +59,5 @@ typings/ | |
|
||
# next.js build output | ||
.next | ||
.idea | ||
aws.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
language: node_js | ||
|
||
services: | ||
- docker | ||
|
||
before_install: | ||
- docker pull localstack/localstack | ||
|
||
node_js: | ||
- stable | ||
|
||
install: | ||
- npm install | ||
|
||
script: | ||
- npm test | ||
|
||
# Send coverage data to Coveralls | ||
after_script: "cat coverage/lcov.info | node_modules/coveralls/bin/coveralls.js" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,33 @@ | ||
# bucket-wrapper | ||
...it's exactly that, a wrapper for a bucket-like store | ||
[![Build Status](https://travis-ci.org/jtviegas/bucket-wrapper.svg?branch=master)](https://travis-ci.org/jtviegas/bucket-wrapper) | ||
[![Coverage Status](https://coveralls.io/repos/github/jtviegas/bucket-wrapper/badge.svg?branch=master)](https://coveralls.io/github/jtviegas/bucket-wrapper?branch=master) | ||
|
||
BUCKET WRAPPER | ||
========= | ||
|
||
...it's exactly that, a wrapper library for a bucket-like store | ||
|
||
## Installation | ||
|
||
`npm install @jtviegas/bucket-wrapper` | ||
|
||
## Usage | ||
|
||
```javascript | ||
var bw = require('@jtviegas/bucket-wrapper'); | ||
bw.listObjects = ("bucket", "bucketPrefix", (e,r) => { | ||
if(e){ | ||
//...do your error handling | ||
} | ||
else { | ||
// ... do whatever you want | ||
} | ||
}); | ||
``` | ||
|
||
## Tests | ||
|
||
`npm test` | ||
|
||
## Contributing | ||
|
||
In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
'use strict'; | ||
|
||
const winston = require('winston'); | ||
const aws = require('aws-sdk'); | ||
|
||
const bucketWrapper = (config) => { | ||
|
||
if (!config) | ||
throw new Error('!!! must provide config to initialize module !!!'); | ||
|
||
const logger = winston.createLogger(config['WINSTON_CONFIG']); | ||
|
||
let s3; | ||
if( config.test && config.test.aws_s3_endpoint ) { | ||
logger.info("[bucketWrapper] using specific url: %s", config.test.aws_s3_endpoint); | ||
s3 = new aws.S3({apiVersion: config.AWS_API_VERSION, endpoint: config.test.aws_s3_endpoint, region: config.AWS_REGION, s3ForcePathStyle: true}); | ||
} | ||
else | ||
s3 = new aws.S3({apiVersion: config.AWS_API_VERSION}); | ||
|
||
const listObjects = (bucketName, bucketNamePrefix, callback) => { | ||
logger.debug("[listObjects|in] (%s, %s)", bucketName, bucketNamePrefix); | ||
try{ | ||
s3.listObjectsV2({ Bucket: bucketName, Prefix: bucketNamePrefix + '/' }, function(e, d) { | ||
logger.debug("[s3.listObjectsV2|in] (%o,%o)", e, d); | ||
if (e){ | ||
logger.error(e); | ||
callback(e); | ||
} | ||
else | ||
callback(null, d.Contents); | ||
}); | ||
} | ||
catch(e){ | ||
logger.error(e); | ||
callback(e); | ||
} | ||
|
||
logger.debug("[listObjects|out]"); | ||
}; | ||
|
||
const createObject = (bucket, key, binaryString, callback) => { | ||
logger.debug("[createObject|in] (%s, %s, <binaryString>)", bucket, key); | ||
try{ | ||
let params = { | ||
Body: binaryString, | ||
Bucket: bucket, | ||
Key: key | ||
}; | ||
s3.putObject(params, function(e, r) { | ||
logger.debug("[s3.putObject|in] (%o,%o)", e, r); | ||
if (e){ | ||
logger.error(e); | ||
callback(e); | ||
} | ||
else | ||
callback(null, r); | ||
}); | ||
} | ||
catch(e){ | ||
logger.error(e); | ||
callback(e); | ||
} | ||
|
||
logger.debug("[createObject|out]"); | ||
}; | ||
|
||
const deleteObjects = (bucket, keys, callback) => { | ||
logger.debug("[deleteObjects|in] (%s, %o)", bucket, keys); | ||
|
||
let _keys = []; | ||
if( Array.isArray(keys) ){ | ||
for( let i=0; i < keys.length; i++ ){ | ||
let _k = keys[i]; | ||
_keys.push({Key: _k}); | ||
} | ||
} | ||
else { | ||
_keys.push({Key: keys}); | ||
} | ||
|
||
try{ | ||
let params = { | ||
Bucket: bucket, | ||
Delete: { | ||
Objects: _keys | ||
} | ||
}; | ||
s3.deleteObjects(params, function(e, r) { | ||
logger.debug("[s3.deleteObjects|in] (%o,%o)", e, r); | ||
if (e){ | ||
logger.error(e); | ||
callback(e); | ||
} | ||
else | ||
callback(null, r); | ||
}); | ||
} | ||
catch(e){ | ||
logger.error(e); | ||
callback(e); | ||
} | ||
logger.debug("[deleteObjects|out]"); | ||
}; | ||
|
||
const getObject = (bucket, key, callback) => { | ||
logger.debug("[getObject|in] (%s, %s)", bucket, key); | ||
try{ | ||
let params = { | ||
Bucket: bucket, | ||
Key: key | ||
}; | ||
s3.getObject(params, function(e, r) { | ||
logger.debug("[s3.getObject|in] (%o,%o)", e, r); | ||
if (e){ | ||
logger.error(e); | ||
callback(e); | ||
} | ||
else | ||
callback(null, r); | ||
}); | ||
} | ||
catch(e){ | ||
logger.error(e); | ||
callback(e); | ||
} | ||
|
||
logger.debug("[getObject|out]"); | ||
}; | ||
|
||
return {listObjects: listObjects | ||
, createObject: createObject | ||
, deleteObjects: deleteObjects | ||
, getObject: getObject}; | ||
}; | ||
|
||
module.exports = bucketWrapper; |
Oops, something went wrong.