import * as Url from '../utils/url.js' ;
/**
* Mimetypes
*
* voir https://www.iana.org/assignments/media-types/media-types.xhtml
* @typedef Mimetypes~Kind
* @enum
*/
export const MimetypesKind = {
opus : "video/ogg",
ogv : "video/ogg",
mp4 : "video/mp4",
mov : "video/mp4",
m4v : "video/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 : 'application/x-mpegURL',
mpd : 'application/dash+xml',
jpg : "image/jpeg",
jpeg : "image/jpeg",
gif : 'image/gif',
png : 'image/png',
svg : 'image/svg+xml',
webp : 'image/webp'
};
/**
* Obtenir le mimetype d'une url src donnée si possible
*
* @param {string} src
* L'url de la source (src)
*
* @return {string}
* renvoie le mimetype s'il est connu ou une chaîne vide sinon
*/
export const getMimetype = function(src = '') {
const ext = Url.getFileExtension(src) ;
const mimetype = MimetypesKind[ext.toLowerCase()] ;
return mimetype || '' ;
};
/**
* Trouver le type de mime d'une chaîne source donnée, si possible. Utilise le lecteur
* cache source.
*
* @param {Player} player
* L'objet joueur
*
* @param {string} src
* La chaîne source
*
* @return {string}
* Le type trouvé
*/
export const findMimetype = (player, src) => {
if (!src) {
retourner '' ;
}
// 1. vérifier le type dans le cache `source`
if (player.cache_.source.src === src && player.cache_.source.type) {
return player.cache_.source.type ;
}
// 2. voir si nous avons cette source dans notre cache `currentSources`
const matchingSources = player.cache_.sources.filter((s) => s.src === src) ;
if (matchingSources.length) {
return matchingSources[0].type ;
}
// 3. rechercher l'url src dans les éléments source et utiliser le type à cet endroit
const sources = player.$$('source') ;
for (let i = 0 ; i < sources.length ; i++) {
const s = sources[i] ;
if (s.type && s.src && s.src === src) {
return s.type ;
}
}
// 4. enfin, nous nous rabattrons sur notre liste de types de mime en fonction de l'extension de l'url de la source
return getMimetype(src) ;
};