export default (client) => {
  return {
    uploadFile(file, onUploadProgress = function () {}, cancelToken = null) {
      const formData = new FormData()
      formData.append('file', file)

      const config = {
        cancelToken,
        onUploadProgress,
        headers: {
          'Content-Type': 'multipart/form-data',
        },
      }

      return client.post('/user-files/upload-file/', formData, config)
    },
    uploadViaURL(url) {
      return client.post('/user-files/upload-via-url/', { url })
    },
    async getFileMetadata(url) {
      try {
        const response = await fetch(url, {
          method: 'HEAD',
        })
        const contentType = response.headers.get('content-type')
        const size = response.headers.get('content-length')
        return { contentType, size }
      } catch (e) {
        return { contentType: 'application/octet-stream', size: 0 }
      }
    },
  }
}