import client from "./axios"

const maxChunks = 20;


function fetchChunks(filePath: string, onData) {
  let chunkNames: string[] = []
  for (let i = 1; i < maxChunks; i++) {
    chunkNames.push(filePath.replace('.json', '') + i.toString() + '.json');
  }
  console.log('###chunkNames', chunkNames)

  let result: object[] = [];
  Promise.all(chunkNames.map(fileName => (
    client({
      url: fileName,
    })
      .then(function (response) {
        result.push(...response.data)
        console.log(`got chunk ${fileName}: `, response.data)
      }).catch(function (error) {
      console.log(`ignore err: ${error} for downloading ${fileName}`)
    })
  ))).then(function (values) {
    console.log('======', result);
    onData(result);
  })
}

export function fetchResourceFile(filePath: string, onData) {
  client({
    url: filePath,
  })
    .then(function (response) {
      onData(response.data);
    }).catch(function (err) {
    const status = err.response?.status;
    if (status === 403 || status === 404) {
      console.log(`fetch in chunk mode,err : ${err}`)
      fetchChunks(filePath, onData);
    }
  });
}

