Spaces:
Sleeping
Sleeping
var admin = require("firebase-admin"); | |
var serviceAccount = require("../serviceAccountKey.json") | |
admin.initializeApp({ | |
credential: admin.credential.cert(serviceAccount), | |
storageBucket: "gs://flutter-hayat.appspot.com/" | |
}); | |
var bucket = admin.storage().bucket(); | |
const d = new Date() | |
const date = new Date(d.setFullYear(d.getFullYear() + 200)).toString() | |
async function uploadFile(filepath, filename) { | |
console.log("File path =>" + filepath) | |
console.log("File name =>" + filename) | |
try { | |
const file = bucket.file(filename); | |
const [exists] = await file.exists(); | |
if (exists) { | |
console.log(`File with name ${filename} already exists. Deleting it...`); | |
await file.delete(); | |
console.log(`File ${filename} deleted successfully.`); | |
} | |
await bucket.upload(filepath, { | |
gzip: true, | |
destination: filename, | |
metadata: { | |
cacheControl: 'public, max-age=31536000' | |
} | |
}); | |
console.log(`${filename} uploaded to bucket.`); | |
} catch (e) { | |
console.log("Error: ", e); | |
} | |
} | |
async function generateSignedUrl(filename) { | |
const options = { | |
version: 'v2', | |
action: 'read', | |
expires: date | |
}; | |
const [url] = await bucket.file(filename).getSignedUrl(options); | |
imageUrl = url + '' | |
console.log(url); | |
return url | |
}; | |
async function uploadAvatar(filepath, userId) { | |
const imageName = `${userId}_profile.jpg`; | |
// Check file exists | |
const file = bucket.file(`ProfilePictures/${imageName}`); | |
const [exists] = await file.exists(); | |
if (exists) { | |
console.log(`File with name ${file.name} already exists. Deleting it...`); | |
await file.delete(); | |
console.log(`File ${file.name} deleted successfully.`); | |
} | |
// Upload file to Firebase Storage | |
await bucket.upload(filepath, { | |
gzip: true, | |
destination: `ProfilePictures/${imageName}`, | |
metadata: { | |
cacheControl: 'public, max-age=31536000', | |
}, | |
}); | |
console.log(`${imageName} uploaded successfully.`); | |
if (!exists) { | |
throw new Error(`File does not exist after upload: ${imageName}`); | |
} | |
// Generate signed URL | |
const [url] = await file.getSignedUrl({ | |
action: 'read', | |
expires: '03-01-2030', | |
}); | |
console.log('Generated URL:', url); | |
return url; | |
} | |
module.exports = { | |
admin, | |
bucket, | |
uploadFile, | |
generateSignedUrl, | |
uploadAvatar | |
} |