Skip to content

Instantly share code, notes, and snippets.

@thehackermonkey
Created June 9, 2020 18:46
Show Gist options
  • Save thehackermonkey/c423f0acd6621d5a60997a9be6baf55e to your computer and use it in GitHub Desktop.
Save thehackermonkey/c423f0acd6621d5a60997a9be6baf55e to your computer and use it in GitHub Desktop.
'use strict';
const Hapi = require('@hapi/hapi');
const AWS = require("aws-sdk");
const { v4: uuidv4 } = require('uuid');
const queryString = require('query-string');
AWS.config.update({region: 'us-west-2'});
const s3 = new AWS.S3({
accessKeyId: "", // aws access id here
secretAccessKey: "", // aws secret access key here
});
const init = async () => {
const server = Hapi.server({
port: 3001,
host: 'localhost',
routes: {
cors: true
}
});
server.route({
method: 'GET',
path: '/',
handler: (request, h) => {
return 'Hello World!';
}
});
server.route({
method: 'GET',
path: '/presignedUrl',
handler: async (request, h) => {
const params = {
Bucket: '', // name of the bucket
Key: `${uuidv4()}.jpg`,
Expires: 60*60,
ACL: 'public-read',
ContentType: "image/jpeg", // accepted file type(s)
};
try{
console.log(params)
const url = await s3.getSignedUrl("putObject", params);
console.log(url)
const parameters = queryString.parse(url.split('?')[1], { decode: false})
const originalUrl = url.split('?')[0];
return h.response({
full: url,
url: originalUrl,
parameters
}).code(201);
} catch(err){
return h.response({
err
}).code(400);
}
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment