import decodeAudioFromArrayBuffer from './decodeAudioFromArrayBuffer';

function getAudioData(path: string, withCredentials = true) {
  return new Promise<AudioBuffer>((resolve, reject) => {
    var request = new XMLHttpRequest();
    request.open('GET', path, true);
    request.responseType = 'arraybuffer';
    request.withCredentials = withCredentials;
    request.onload = function () {
      var audioData = request.response;
      decodeAudioFromArrayBuffer(audioData).then(resolve).catch(reject);
    };
    request.send();
  });
}

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

export default downloadAndDecodeAudio;
