Revoir la déclaration des providers
Je découvre que l'url https://youtube.com/shorts/4wn5XeEDIRk
n'est pas matché par nos regex à ce jour, normal car on déclare http://*.youtube.com/shorts*
mais pas http://youtube.com/shorts*
.
En y regardant de plus prêt, je vois qu'on gère ce genre de cas en doublonnant les providers comme par exemple :
'http://*.flickr.com/*' => 'https://www.flickr.com/services/oembed/',
'http://flickr.com/*' => 'https://www.flickr.com/services/oembed/',
Amha, on pourrait faire mieux en s'inspirant de ce que fait la classe oembed de WP dont on s'inspire depuis le début https://core.trac.wordpress.org/browser/trunk/src/wp-includes/class-wp-oembed.php#L53
Dans cette classe, il y a deux syntaxes pour déclarer un provider, celle qu'on utilise à base de .*
qui est ensuite convertie en regex par oembed_verifier_provider()
, puis une véritable regex. Le seul truc qui me chagrine dans leur implémentation est qu'il faut utiliser un array pour déclarer le endpoint et passer en seconde valeur de celui-ci true
pour indiquer que c'est une véritable regex exemple #https?://((m|www)\.)?youtube\.com/watch.*#i' => array( 'https://www.youtube.com/oembed', true ),
.
Je propose qu'on fasse un peu pareil, mais en se passant de ce sous tableau pour ne tester que la présence d'un #
en début du scheme à matcher pour décréter que c'est une véritable regex. Ainsi, on ne casse pas la compatibilité ascendante des sites qui ajoutent des providers depuis le pipeline oembed_lister_providers
, et surtout on peut se permettre d'utiliser la liste des providers de la classe oembed par simple copier/coller sans se prendre la tête. De plus, cela pourrait améliorer les perfs si matcher un truc comme ((m|www)\.)?
est moins coûteux que de matcher (.+)
.