nfp_sites/base/media/upload.mjs

84 lines
2.2 KiB
JavaScript

import config from '../config.mjs'
import Client from './client.mjs'
export function uploadMedia(file) {
const media = config.get('media')
const client = new Client()
let token = client.createJwt({ iss: media.iss }, media.secret)
let out = {
sizes: {
small: media.small ? {} : null,
medium: media.medium ? {} : null,
large: media.large ? {} : null,
}
}
return client.upload(media.path + '?token=' + token, { file: {
file: file.path,
filename: file.name,
} }, 'POST', {
preview: media.preview,
small: media.small?.avif,
medium: media.medium?.avif,
large: media.large?.avif,
/*
small: media.small.jpeg,
medium: media.medium.avif,
large_jpeg: mediakl.large.jpeg,*/
}).then(res => {
out.filename = res.filename
out.path = res.path
out.preview = res.preview
if (out.sizes.small) { out.sizes.small.avif = res.small }
if (out.sizes.medium) { out.sizes.medium.avif = res.medium }
if (out.sizes.large) { out.sizes.large.avif = res.large }
out.size = file.size
out.type = file.type
return client.post(media.path + '/' + out.filename + '?token=' + token, {
small: media.small?.jpeg,
medium: media.medium?.jpeg,
large: media.large?.jpeg,
})
.then(res => {
if (out.sizes.small) { out.sizes.small.jpeg = res.small }
if (out.sizes.medium) { out.sizes.medium.jpeg = res.medium }
if (out.sizes.large) { out.sizes.large.jpeg = res.large }
})
})
.then(() => {
return out
})
}
export function uploadFile(file) {
const media = config.get('media')
const client = new Client()
let token = client.createJwt({ iss: media.iss }, media.secret)
return client.upload(media.filePath + '?token=' + token, { file: {
file: file.path,
filename: file.name,
} }, 'POST').then(res => {
return {
filename: res.filename,
path: res.path,
size: file.size,
type: file.type,
}
})
}
export function deleteFile(filename) {
const media = config.get('media')
const client = new Client()
let token = client.createJwt({ iss: media.iss }, media.secret)
return client.delete(media.removePath + filename + '?token=' + token, { })
}