40 lines
914 B
JavaScript
40 lines
914 B
JavaScript
|
|
const { getApiBaseUrl } = require('./constants')
|
||
|
|
|
||
|
|
function isLocalDevUrl(url) {
|
||
|
|
return /^https?:\/\/(127\.0\.0\.1|localhost|0\.0\.0\.0)(:\d+)?\//i.test(url)
|
||
|
|
}
|
||
|
|
|
||
|
|
function upgradeToHttpsIfNeeded(url) {
|
||
|
|
if (/^http:\/\//i.test(url) && !isLocalDevUrl(url)) {
|
||
|
|
return url.replace(/^http:\/\//i, 'https://')
|
||
|
|
}
|
||
|
|
return url
|
||
|
|
}
|
||
|
|
|
||
|
|
function resolveImageUrl(url) {
|
||
|
|
if (!url) {
|
||
|
|
return ''
|
||
|
|
}
|
||
|
|
if (/^https?:\/\//i.test(url)) {
|
||
|
|
return upgradeToHttpsIfNeeded(url)
|
||
|
|
}
|
||
|
|
|
||
|
|
const baseUrl = getApiBaseUrl().replace(/\/api\/v1\/?$/, '')
|
||
|
|
const resolved = url.startsWith('/') ? `${baseUrl}${url}` : `${baseUrl}/${url}`
|
||
|
|
return upgradeToHttpsIfNeeded(resolved)
|
||
|
|
}
|
||
|
|
|
||
|
|
function resolveImageList(urls) {
|
||
|
|
if (!Array.isArray(urls)) {
|
||
|
|
return []
|
||
|
|
}
|
||
|
|
return urls.map((item) => resolveImageUrl(item)).filter(Boolean)
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = {
|
||
|
|
resolveImageUrl,
|
||
|
|
resolveImageList,
|
||
|
|
upgradeToHttpsIfNeeded,
|
||
|
|
isLocalDevUrl
|
||
|
|
}
|