61 lines
1.2 KiB
JavaScript
61 lines
1.2 KiB
JavaScript
import { fetchURL, removePrefix } from './utils'
|
|
import { baseURL } from '@/utils/constants'
|
|
|
|
export async function fetch (url, password = "") {
|
|
url = removePrefix(url)
|
|
|
|
const res = await fetchURL(`/api/public/share${url}`, {
|
|
headers: {'X-SHARE-PASSWORD': password},
|
|
})
|
|
|
|
if (res.status === 200) {
|
|
let data = await res.json()
|
|
data.url = `/share${url}`
|
|
|
|
if (data.isDir) {
|
|
if (!data.url.endsWith('/')) data.url += '/'
|
|
data.items = data.items.map((item, index) => {
|
|
item.index = index
|
|
item.url = `${data.url}${encodeURIComponent(item.name)}`
|
|
|
|
if (item.isDir) {
|
|
item.url += '/'
|
|
}
|
|
|
|
return item
|
|
})
|
|
}
|
|
|
|
return data
|
|
} else {
|
|
throw new Error(res.status)
|
|
}
|
|
}
|
|
|
|
export function download(format, hash, token, ...files) {
|
|
let url = `${baseURL}/api/public/dl/${hash}`
|
|
|
|
if (files.length === 1) {
|
|
url += encodeURIComponent(files[0]) + '?'
|
|
} else {
|
|
let arg = ''
|
|
|
|
for (let file of files) {
|
|
arg += encodeURIComponent(file) + ','
|
|
}
|
|
|
|
arg = arg.substring(0, arg.length - 1)
|
|
arg = encodeURIComponent(arg)
|
|
url += `/?files=${arg}&`
|
|
}
|
|
|
|
if (format) {
|
|
url += `algo=${format}&`
|
|
}
|
|
|
|
if (token) {
|
|
url += `token=${token}&`
|
|
}
|
|
|
|
window.open(url)
|
|
} |