Skip to content

Commit

Permalink
S3 upload and utils (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
eebbesen committed Nov 4, 2018
1 parent 18b14ce commit 3a8f215
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 4 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1,3 +1,4 @@
node_modules
config.js
output/*.mp3
uploaded/*.mp3
17 changes: 17 additions & 0 deletions README.md
Expand Up @@ -33,3 +33,20 @@ create database eulagy_test;
GRANT ALL PRIVILEGES ON DATABASE eulagy to eulagy_test;
```

### Helper functions
#### List buckets
```bash
node lib/buckets
```

#### Create bucket
Bucket name defaults to `eulagy`. Will not create a bucket that already exists.
```bash
node lib/buckets create [name]
```

#### Upload files
Will upload all files from `output` to S3 bucket named `eulagy`. DOES NOT check for duplicates, so move records from `output` to `uploaded` once they are uploaded.
```bash
node lib/buckets upload
```
88 changes: 88 additions & 0 deletions lib/buckets.js
@@ -0,0 +1,88 @@
'use strict'

// mostly from https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-creating-buckets.html

const AWS = require('aws-sdk');
const fsPromises = require('fs').promises;
// Create S3 service object
const s3 = new AWS.S3({apiVersion: '2006-03-01'});

// Call S3 to list current buckets
const listBuckets = function() {
return s3.listBuckets((err, data) => {
if (err) {
console.log("Error", err);
} else {
return data;
}
}).promise();
};

const createBucket = function(name) {
const bucketName = name || 'eulagy';

listBuckets()
.then(bs => {
bs['Buckets'].forEach( b => {
if(b['Name'] === bucketName) {
console.log(`${bucketName} already exists!`);
return true;
}
console.log(`Will create ${bucketName}`);
});
})
.then(() => {
s3.createBucket({ Bucket: bucketName }, (err, data) => {
if (err) {
console.log(`Error in createBucket:\n ${err}`);
} else {
console.log(`Success!: ${data.Location}`, data)
}
});
});
};

const listFiles = function(name) {
const bucketName = name || 'eulagy';
return s3.listObjects({ Bucket: bucketName }, function(err, data) {
if (err) {
console.log("Error", err);
} else {
return data;
}
}).promise();
};

const uploadFile = function(name, data) {
console.log('yyyyyyy', data);
const params = { Bucket: 'eulagy', Key: name, Body: data };
return s3.upload (params, function (err, data) {
if (err) {
console.log("Error", err, data);
}
}).promise();
}

// create buckets, up
const uploadFiles = function() {
return fsPromises.readdir('output')
.then((files, err) => {
files.forEach(f => {
fsPromises.readFile(`output/${f}`)
.then((buffer, err) => {
uploadFile(f, buffer)
.then(() => { console.log(`Uploaded ${f}`); });
});
});
});
};

if (process.argv[2] === 'create') {
createBucket();
} else if (process.argv[2] === 'files') {
listFiles().then(d => { console.log(d); });
} else if (process.argv[2] === 'upload') {
uploadFiles().then(d => {});
} else {
listBuckets().then(d => { console.log(d); });
}
6 changes: 2 additions & 4 deletions lib/db_to_mp3.js
Expand Up @@ -2,7 +2,7 @@

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

const dbToMp3 = function() {
function() {
const records = app
.getAllRecords()
.then(rs => {
Expand All @@ -14,6 +14,4 @@ const dbToMp3 = function() {
});
});
})
};

dbToMp3();
}();
Empty file added uploaded/.keep
Empty file.

0 comments on commit 3a8f215

Please sign in to comment.