Skip to content

Commit

Permalink
Merge fdfbada into 545d7ad
Browse files Browse the repository at this point in the history
  • Loading branch information
manuelvilche committed Dec 6, 2019
2 parents 545d7ad + fdfbada commit 2714c5a
Show file tree
Hide file tree
Showing 12 changed files with 3,770 additions and 4 deletions.
122 changes: 122 additions & 0 deletions .eslintrc.js
@@ -0,0 +1,122 @@
'use strict';

module.exports = {
extends: 'airbnb-base',

env: {
node: true,
es6: true,
mocha: true
},

globals: {
__rootpath: true,
coreRequire: true,
mainRequire: true,
JANIS_CORE: true,
JANIS_ENV: true,
JANIS_ENV_ALIAS: true
},

parserOptions: {
sourceType: 'script'
},

settings: {
'import/core-modules': ['aws-sdk', 'lodash', 'yamljs', 'openapi-schema-validator']
},

rules: {
'operator-linebreak': 0,
'no-continue': 0,
'no-plusplus': 0,
'prefer-spread': 0,
'prefer-rest-params': 0,
'class-methods-use-this': 0,
'consistent-return': 0,
'prefer-template': 0,
'import/no-unresolved': 0,
'import/no-extraneous-dependencies': ['error', { devDependencies: ['**/tests/**/*.js'] }],

'no-bitwise': 0,

curly: ['error', 'multi-or-nest'],

'no-underscore-dangle': ['warn', {
allowAfterThis: true,
allowAfterSuper: true,
allow: ['_call', '__rootpath', '_where']
}],

'no-tabs': 0,

'no-new': 0,

'func-names': 0,

'space-before-function-paren': ['error', {
'anonymous': 'never',
'named': 'never',
'asyncArrow': 'always'
}],

'arrow-parens': ['error', 'as-needed'],
'arrow-body-style': 0,

indent: ['error', 'tab', {
SwitchCase: 1
}],

'comma-dangle': ['error', 'never'],

'padded-blocks': 0,

'max-len': ['error', {
code: 150,
tabWidth: 1,
comments: 200
}],

'spaced-comment': ['error', 'always', {
exceptions: ['*']
}],

'newline-per-chained-call': ['error', {
ignoreChainWithDepth: 2
}],

'no-param-reassign': 0,

'no-prototype-builtins': 0,

'keyword-spacing': ['error', {
overrides: {
if: {
after: false
},
for: {
after: false
},
while: {
after: false
},
switch: {
after: false
},
catch: {
after: false
}
}
}],

'no-restricted-syntax': ['error', 'ForInStatement', 'LabeledStatement', 'WithStatement'],
'function-paren-newline': 0,
'no-await-in-loop': 0,

'object-curly-newline': ['error', {
ObjectExpression: { minProperties: 5, multiline: true, consistent: true },
ObjectPattern: { minProperties: 5, multiline: true, consistent: true }
}],
'nonblock-statement-body-position': ['error', 'below', { overrides: { else: 'any' } }]
}
};
61 changes: 61 additions & 0 deletions .gitignore
@@ -0,0 +1,61 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

# next.js build output
.next
5 changes: 5 additions & 0 deletions .huskyrc.json
@@ -0,0 +1,5 @@
{
"hooks": {
"pre-commit": "npm run lint && npm t"
}
}
20 changes: 20 additions & 0 deletions .nycrc
@@ -0,0 +1,20 @@
{
"exclude": [
"coverage/",
"tests/",
"mocks/",
".eslintrc.js",
".travis.yml"
],
"extension": [
".js"
],
"cache": true,
"all": true,
"default-excludes": true,
"check-coverage": true,
"statements": 95,
"branches": 95,
"functions": 95,
"lines": 95
}
15 changes: 15 additions & 0 deletions .travis.yml
@@ -0,0 +1,15 @@
language: node_js
node_js:
- "lts/*"
cache: npm
script:
- |
# Run test script
npm run test-ci
after_script:
- |
# Upload coverage to coveralls
if [[ -d .nyc_output ]]; then
npm install --save-dev coveralls@2
nyc report --reporter=text-lcov | coveralls
fi
18 changes: 18 additions & 0 deletions CHANGELOG.md
@@ -0,0 +1,18 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.0] - 2019-12-06
### Added
- add `putObject` mehtod
- add `deleteObject` mehtod
- add `listObjects` mehtod
- add `listBuckets` mehtod
- add `createBucket` mehtod
- add `deleteBucket` mehtod

27 changes: 23 additions & 4 deletions README.md
Expand Up @@ -9,14 +9,33 @@ A package to handle the S3 requests
```sh
npm install @janiscommerce/s3
```
## Methods
The methods that can be used are:

## API

* `getObject`
* `putObject`
* `deleteObject`
* `listObjects`
* `listBuckets`
* `createBucket`
* `deleteBucket`

## Usage
```js
const S3 = require('@janiscommerce/s3');

```
const putObjectParams = {
Body: 'body',
Bucket: 'bucketName',
Key: `objectKey`
};

const s3Response = S3.putObject(putObjectParams);

## Examples
return s3Response.then(respponse => {
// do some stuf with the success
}).cath(err => {
// do some stuf with the error
})

```
13 changes: 13 additions & 0 deletions lib/s3.js
@@ -0,0 +1,13 @@
'use strict';

const s3Wrapper = require('./s3Wrapper');

module.exports = {
getObject: params => s3Wrapper.getObject(params).promise(),
putObject: params => s3Wrapper.putObject(params).promise(),
deleteObject: params => s3Wrapper.deleteObject(params).promise(),
listObjects: params => s3Wrapper.listObjects(params).promise(),
listBuckets: params => s3Wrapper.listBuckets(params).promise(),
createBucket: params => s3Wrapper.createBucket(params).promise(),
deleteBucket: params => s3Wrapper.deleteBucket(params).promise()
};
15 changes: 15 additions & 0 deletions lib/s3Wrapper.js
@@ -0,0 +1,15 @@
'use strict';

const { S3, Endpoint } = require('aws-sdk');

const { IS_OFFLINE, S3_LOCAL_ENDPOINT } = process.env;

const localConfig = {
s3ForcePathStyle: true,
endpoint: S3_LOCAL_ENDPOINT ? /* istanbul ignore next */ new Endpoint(S3_LOCAL_ENDPOINT) : null,
accessKeyId: 'S3RVER',
secretAccessKey: 'S3RVER'
};

// Use the ignore because cannot change that process env globally
module.exports = /* istanbul ignore next */ IS_OFFLINE && S3_LOCAL_ENDPOINT ? /* istanbul ignore next */ new S3(localConfig) : new S3();

0 comments on commit 2714c5a

Please sign in to comment.