Skip to content

Commit

Permalink
ft<>file upload
Browse files Browse the repository at this point in the history
  • Loading branch information
Timothy-py committed Jul 17, 2024
1 parent 4e11005 commit 6466d38
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 56 deletions.
47 changes: 18 additions & 29 deletions controllers/users.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
const asyncHandler = require('../middleware/async');
const User = require('../model/user');
const ErrorResponse = require('../utils/errorResponse');
const firebase = require('../firebase');
const firebase = require('../firebase/firebase');
const path = require('path');
const fs = require('fs');
const upload = require('../firebase/upload');

/**
* @author Timothy Adeyeye <adeyeyetimothy33@gmail.com>
Expand Down Expand Up @@ -155,40 +156,28 @@ exports.getUserByEmail = async (req, res) => {
* @type GET
*/
exports.uploadImage = async (req, res) => {
try {
if (!req.file) {
return res.status(400).json({
success: false,
message: 'No file'
});
}

const buffer = req.file.buffer;
const destination = `Afrisplash/${req.file.originalname}`;
const bucket = firebase.storage().bucket('mylangcoach-1e26a.appspot.com');

// Upload to firebase storage
const file = bucket.file(destination);
await file.save(buffer, {
metadata: {
contentType: req.file.mimetype
}
if (!req.file) {
return res.status(400).json({
success: false,
message: 'No file'
});
}

const [url] = await file.getSignedUrl({
action: 'read',
expires: '01-01-2070'
});
const buffer = req.file.buffer;
const mimetype = req.file.mimetype;

return res.status(200).json({
success: true,
url: url
});
} catch (error) {
const uploadResponse = await upload(buffer, mimetype);

if (!uploadResponse.status) {
return res.status(500).json({
success: false,
message: 'Failed to upload image',
error: error.message
error: uploadResponse.error
});
}

return res.status(200).json({
success: true,
url: uploadResponse.data
});
};
File renamed without changes.
2 changes: 0 additions & 2 deletions firebase.js → firebase/firebase.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ const firebase = require('firebase-admin');

const serviceAccount = require('./firebase-service-account');

// console.log(serviceAccount);

firebase.initializeApp({
credential: firebase.credential.cert(serviceAccount)
});
Expand Down
34 changes: 34 additions & 0 deletions firebase/upload.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
const firebase = require('./firebase');
const { v4: uuidv4 } = require('uuid');

const upload = async (buffer, mimetype) => {
try {
const destination = `Afrisplash/${uuidv4()}`;
const bucket = firebase.storage().bucket('mylangcoach-1e26a.appspot.com');

// Upload to firebase storage
const file = bucket.file(destination);
await file.save(buffer, {
metadata: {
contentType: mimetype
}
});

const [url] = await file.getSignedUrl({
action: 'read',
expires: '01-01-2070'
});

return {
status: true,
data: url
};
} catch (error) {
return {
status: false,
error: error
};
}
};

module.exports = upload;
66 changes: 42 additions & 24 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@
"nodemailer": "^6.8.0",
"nodemailer-express-handlebars": "^6.1.0",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-express": "^5.0.0"
"swagger-ui-express": "^5.0.0",
"uuid": "^10.0.0"
},
"devDependencies": {
"jest": "^29.1.2",
Expand Down

0 comments on commit 6466d38

Please sign in to comment.