import decodeAudioFromArrayBuffer from './decodeAudioFromArrayBuffer';

function getAudioData(path: string, withCredentials = false) {
  return new Promise<AudioBuffer>((resolve, reject) => {
    const request = new XMLHttpRequest();
    request.open('GET', path, true);
    request.responseType = 'arraybuffer';
    request.withCredentials = withCredentials;
    request.setRequestHeader('Cache-Control', 'max-age=3600');
    request.onload = function () {
      const audioData = request.response;
      decodeAudioFromArrayBuffer(audioData).then(resolve).catch(reject);
    };
    request.send();
  });
}

const downloadAndDecodeAudio = (
  path: string,
  withCredentials = false
): Promise<AudioBuffer> => getAudioData(path, withCredentials);

export default downloadAndDecodeAudio;
