ar S3 = require('aws-sdk/clients/s3');
const s3UploadFolder = require('s3-folder-upload');
const fs = require('fs');
const parser = require('lambda-multipart-parser');
const AdmZip = require('adm-zip');
const path = require('path');
const del = require('del');
const { reafy_schema: { dbUser, dbApp } } = require('@juli-ai/orm')(require('./../config.json'));
const credentials = {
"accessKeyId": "WOHO_AWS_KEYS",
"secretAccessKey": "WOHO_AWS_KEYS",
"region": "us-east-1",
"bucket": "reafy-clients-normal"
}
const options = {
useFoldersForFileTypes: false,
useIAMRoleCredentials: false
}
module.exports.handler = async event => {
const user = await dbUser.query().where({'user_api_key': event.pathParameters.api_key}).first();
const app = await dbApp.query().where({'app_uuid': event.pathParameters.app_uuid}).first();
if(app.userUuid === user.uuid){
const app_name = app.appUniqueName;
await del([`temp/${app_name}`], {force: false});
let result = await parser.parse(event);
let zip = new AdmZip(result.files[0].content);
zip.extractAllTo(path.join(process.cwd(), `/temp/${app_name}/`));
fs.rename(process.cwd() + `/temp/${app_name}/build/`, process.cwd() + `/temp/${app_name}/${app_name}/`, function (err) {
if (err) throw err;
const directoryName = path.join(process.cwd(), `/temp/${app_name}`);
s3UploadFolder(directoryName, credentials, options)
return {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify({ message: "Uploaded completed!" })
}
});
} else {
return {
statusCode: 500,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify({ message: "Ops! you cant access to upload" })
}
}
};