Created
June 9, 2020 18:46
-
-
Save thehackermonkey/c423f0acd6621d5a60997a9be6baf55e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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