Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- deviceIcon.getImage = async(req, res, next) => {
- try {
- if (!req.body.deviceName) {
- res.status(400).json({msg: 'Device name required'});
- return;
- }
- AWS.config.update({
- apiVersion: '2006-03-01',
- accessKeyId: config.aws.accessKeyId,
- secretAccessKey: config.aws.secretAccessKey
- });
- const s3 = new AWS.S3();
- if (!s3) {
- res.status(500).json({msg: 'Can\'t Initialize S3 Object - Check your AWS settings in your .env'});
- return;
- }
- const deviceName = req.body.deviceName.replace(/[^0-9a-z]/gi, '').toLowerCase();
- s3.listObjectsV2({Bucket: config.aws.s3BucketName}, (err, data) => {
- if (err) {
- console.error(err);
- res.status(500).json({msg: 'Internal server error'}).end();
- } else {
- const files = data.Contents.map(file => ({
- filename: file.Key.split('.').slice(0, -1).join('.'),
- uri: config.aws.url + file.Key,
- similarity: stringSimilarity.compareTwoStrings(deviceName, file.Key.split('.').slice(0, -1).join('.').split('-').join(' ').toLowerCase())
- }));
- let maxS = 0;
- let result = null;
- for (const file of files) {
- if (file.similarity > maxS) {
- maxS = file.similarity;
- result = file;
- }
- }
- if (result && result.similarity > 0.50) {
- res.status(200).json({icon: result.uri}).end();
- } else {
- res.status(200).json({icon: config.aws.url + 'no-img.png'}).end();
- }
- }
- });
- } catch (error) {
- next(error);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement