FreddyJD
10/24/2019 - 4:16 PM

File_upload.js

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" })
      }

    }
};