importar * como URL desde '../utils/url.js';

/ **
 * Mimetipos
 *
 * @ver https://www.iana.org/assignments/media-types/media-types.xhtml
 * @typedef Mimetypes~Tipo
 * @enum
 * /
export const MimetypesKind = {
  obra: 'video/ogg',
  ogv: 'vídeo/ogg',
  mp4: 'vídeo/mp4',
  mov: 'video/mp4',
  m4v: 'vídeo/mp4',
  mkv: 'video/x-matroska',
  m4a: 'audio/mp4',
  mp3: 'audio/mpeg',
  aac: 'audio/aac',
  caf: 'audio/x-caf',
  flac: 'audio/flac',
  oga: 'audio/ogg',
  wav: 'audio/wav',
  m3u8: 'aplicación/x-mpegURL',
  mpd: 'aplicación/guion+xml',
  jpg: 'imagen/jpeg',
  jpeg: 'imagen/jpeg',
  gif: 'imagen/gif',
  png: 'imagen/png',
  svg: 'imagen/svg+xml',
  webp: 'imagen/webp'
};

/ **
 * Obtener el tipo MIME de una url src dada si es posible
 *
 * @param {cadena} src
 * La url al src
 *
 * @return {cadena}
 * devuelve el tipo MIME si era conocido o una cadena vacía de lo contrario
 * /
export const getMimetype = function(src = '') {
  const ext = Url.getFileExtension(src);
  const mimetype = MimetypesKind[ext.toLowerCase()];

  devolver tipo MIME || '';
};

/ **
 * Encuentre el tipo MIME de una cadena de origen determinada si es posible. utiliza el reproductor
 * caché de origen.
 *
 * @param {Jugador} jugador
 * El objeto jugador
 *
 * @param {cadena} src
 * La cadena de origen
 *
 * @return {cadena}
 * El tipo que se encontró
 * /
export const findMimetype = (jugador, src) => {
  si (!origen) {
    devolver '';
  }

  // 1. comprobar el tipo en la memoria caché `fuente`
  if (jugador.caché_.fuente.src === src && player.cache_.fuente.tipo) {
    volver player.cache_.source.type;
  }

  // 2. ver si tenemos esta fuente en nuestro caché `currentSources`
  const matchingSources = player.cache_.sources.filter((s) => s.src === src);

  if (fuentes coincidentes.longitud) {
    devuelve las fuentes coincidentes[0].type;
  }

  // 3. busque la url src en los elementos fuente y use el tipo allí
  const fuentes = jugador.$$('fuente');

  para (sea i = 0; i < fuentes.longitud; i++) {
    const s = fuentes[i];

    si (s.tipo && s.src && s.src === src) {
      volver a tipo;
    }
  }

  // 4. finalmente recurra a nuestra lista de tipos mime basados en la extensión de URL src
  devuelve getMimetype(src);
};