linguaielts-api / fronted /src /utils /cloudinaryUrl.js
AnhviNguyen
push cloud
9114bf3
Raw
History Blame Contribute Delete
1.12 kB
/** Direct Cloudinary delivery URLs for quiz audio/images. */
export function mediaFileStem(fileId) {
let id = String(fileId || '').trim()
if (!id) return ''
if (id.startsWith('http://') || id.startsWith('https://')) return id
id = id
.replace(/^\/api\/images\//, '')
.replace(/^\/images\//, '')
.replace(/^\/api\/audio\//, '')
.replace(/^\/audio\//, '')
return id.split('.')[0]
}
export function cloudinaryCloudName() {
return (import.meta.env.VITE_CLOUDINARY_CLOUD_NAME || '').trim()
}
export function cloudinaryAudioUrl(fileId) {
const stem = mediaFileStem(fileId)
const cloud = cloudinaryCloudName()
if (!cloud || !stem || stem.startsWith('http')) return ''
return `https://res.cloudinary.com/${cloud}/video/upload/audio/${stem}.mp3`
}
export function cloudinaryImageUrl(fileId) {
const stem = mediaFileStem(fileId)
const cloud = cloudinaryCloudName()
if (!cloud || !stem || stem.startsWith('http')) return ''
return `https://res.cloudinary.com/${cloud}/image/upload/images/${stem}.png`
}
export function usesCloudinaryCdn() {
return Boolean(cloudinaryCloudName())
}