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: {},
      medium: {},
      large: {},
    }
  }

  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: media.large.jpeg,*/
  }).then(res => {
    out.filename = res.filename
    out.path = res.path
    out.preview = res.preview
    out.sizes.small.avif = res.small
    out.sizes.medium.avif = res.medium
    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 => {
      out.sizes.small.jpeg = res.small
      out.sizes.medium.jpeg = res.medium
      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, { })
}
