mirror of
				https://github.com/HabitRPG/habitica.git
				synced 2025-10-29 04:04:47 +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);
 | |
|   });
 |