mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-10-26 18:52:37 +01:00
94 lines
2.2 KiB
JavaScript
94 lines
2.2 KiB
JavaScript
/* eslint-disable import/no-commonjs */
|
|
const request = require('superagent');
|
|
const last = require('lodash/last');
|
|
const AWS = require('aws-sdk');
|
|
|
|
const config = require('../config');
|
|
|
|
const S3_DIRECTORY = 'mobileApp/images'; // config.S3.SPRITES_DIRECTORY;
|
|
|
|
AWS.config.update({
|
|
accessKeyId: config.S3.accessKeyId,
|
|
secretAccessKey: config.S3.secretAccessKey,
|
|
// region: config.get('S3_REGION'),
|
|
});
|
|
|
|
const BUCKET_NAME = config.S3.bucket;
|
|
const s3 = new AWS.S3();
|
|
|
|
// Adapted from https://stackoverflow.com/a/22210077/2601552
|
|
function uploadFile (buffer, fileName) {
|
|
return new Promise((resolve, reject) => {
|
|
s3.putObject({
|
|
Body: buffer,
|
|
Key: fileName,
|
|
Bucket: BUCKET_NAME,
|
|
}, error => {
|
|
if (error) {
|
|
reject(error);
|
|
} else {
|
|
// console.info(`${fileName} uploaded to ${BUCKET_NAME} successfully.`);
|
|
resolve(fileName);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
function getFileName (file) {
|
|
const piecesOfPath = file.split('/');
|
|
const name = last(piecesOfPath);
|
|
const fullName = S3_DIRECTORY + name;
|
|
|
|
return fullName;
|
|
}
|
|
|
|
function getFileFromUrl (url) {
|
|
return new Promise((resolve, reject) => {
|
|
request.get(url).end((err, res) => {
|
|
if (err) return reject(err);
|
|
const file = res.body;
|
|
return resolve(file);
|
|
});
|
|
});
|
|
}
|
|
|
|
let commit = '78f94e365c72cc58f66857d5941105638db7d35c';
|
|
commit = 'df0dbaba636c9ce424cc7040f7bd7fc1aa311015';
|
|
const gihuburl = `https://api.github.com/repos/HabitRPG/habitica/commits/${commit}`;
|
|
|
|
|
|
let currentIndex = 0;
|
|
|
|
function uploadToS3 (start, end, filesUrls) {
|
|
const urls = filesUrls.slice(start, end);
|
|
|
|
if (urls.length === 0) {
|
|
console.log('done');
|
|
return;
|
|
}
|
|
|
|
const promises = urls.map(fullUrl => getFileFromUrl(fullUrl)
|
|
.then(buffer => uploadFile(buffer, getFileName(fullUrl))));
|
|
console.log(promises.length);
|
|
|
|
Promise.all(promises)
|
|
.then(() => {
|
|
currentIndex += 50;
|
|
uploadToS3(currentIndex, currentIndex + 50, filesUrls);
|
|
})
|
|
.catch(e => {
|
|
console.log(e);
|
|
});
|
|
}
|
|
|
|
request.get(gihuburl)
|
|
.end((err, res) => {
|
|
console.log(err);
|
|
const { files } = res.body;
|
|
|
|
let filesUrls = [''];
|
|
filesUrls = files.map(file => file.raw_url);
|
|
|
|
uploadToS3(currentIndex, currentIndex + 50, filesUrls);
|
|
});
|