const demoTypeList = [
  { type: 'image', url: 'https://upload.wikimedia.org/wikipedia/commons/5/57/Binance_Logo.png' },
  { type: 'pdf', url: 'https://abseil.io/resources/swe_at_google.2.pdf' },
  { type: 'xlsx', url: 'https://www.google.com/help/hc/downloads/sa360/Location-Language-Codes-GoogleAds.xlsx' },
  { type: 'doc', url: 'https://www-03.ibm.com/software/sla/sladb.nsf/8bd55c6b9fa8039c86256c6800578854/6fb5af3e1e25830e8525843200220908/$FILE/i126-8560-01_07-2019_zh_TW.docx' },
  { type: 'txt', url: 'https://www.easy168.tw/urllist.txt' },
  { type: 'ppt', url: 'https://sysh.tc.edu.tw/var/file/64/1064/img/545856627.ppt' }
]

demoTypeList.forEach(item => {
  initBtnDownload(item)
})

function initBtnDownload(item){
  switch (item.type){
    case 'txt':
      document.querySelector(`#download-btn-${item.type}`)
        .addEventListener('click', async function (event) {
          try {
            const txtRaw = await (await fetch(item.url)).text()
            const txtBlob = new Blob([txtRaw], { type: "text/plain;charset=utf-8" })
            const txtURL = URL.createObjectURL(txtBlob)
            const aLinkDOM = document.createElement('a')
            aLinkDOM.href = txtURL
            aLinkDOM.download = 'demo.txt'
            document.body.appendChild(aLinkDOM)
            aLinkDOM.click()
            document.body.appendChild(aLinkDOM)
          } catch (err) {
            console.log(err)
          }
        })
      break
      case 'image':
        document.querySelector(`#download-btn-${item.type}`)
          .addEventListener('click', async function (event) {
            try {
              const image = await fetch(item.url)
              const imageBlob = await image.blob()
              const imageURL = URL.createObjectURL(imageBlob)
              const aLinkDOM = document.createElement('a')
              aLinkDOM.href = imageURL
              aLinkDOM.download = ''
              document.body.appendChild(aLinkDOM);
              aLinkDOM.click()
              document.body.removeChild(aLinkDOM);
              URL.revokeObjectURL(imageURL)
            } catch (err) {
              console.log(err)
            }
          })
      break
      default:
        document.querySelector(`#download-btn-${item.type}`).addEventListener('click', function (event) {
          const aLinkDom = document.createElement('a')
          aLinkDom.href = item.url
          aLinkDom.download = ''
          document.body.appendChild(aLinkDom);
          aLinkDom.click()
          document.body.removeChild(aLinkDom);
        })
      break
  }
}