Évaluation dynamique
Si les variables de substitution comme ${file.meta.width} ne suffisent pas à implémenter
la logique de votre application, vous pouvez aussi utiliser toutes les fonctionnalités du JavaScript
moderne pour créer des instructions dynamiques pour une
Assembly. Ces scripts seront exécutés sur notre
infrastructure et auront accès à toutes les
Assembly Variables. Cela comprend les métadonnées d’un fichier
que Transloadit détermine automatiquement, des informations de base sur l’exécution de l’Assembly,
ainsi que les
champs que vous pouvez renseigner en tant que développeur lors de la création de l’Assembly.
Par exemple, vous pourriez vouloir redimensionner des images pour respecter le principe de conception du nombre d’or :
{
"robot": "/image/resize",
"height": "${file.meta.width / ((1 + Math.sqrt(5)) / 2)}",
"resize_strategy": "crop"
}
Ou vous pourriez vouloir passer le nom du fichier de sortie en majuscules lors du téléversement vers S3 (English) :
{
"robot": "/s3/store",
"path": "my-folder/${file.name.toUpperCase()}"
}
Tout ce qui se trouve dans ${...} sera évalué, et vous disposez de toutes les
fonctionnalités du langage JavaScript, tant que votre script n’effectue aucune opération asynchrone.
Par exemple, vous pouvez utiliser les méthodes
Math,
Date ou
String.
Recherche de variables
L’évaluation dynamique est gratuite lorsqu’elle se limite à une simple recherche, comme
${file.name} ou ${file.meta.faces[0]}.
Pour les évaluations plus complexes, comme ${Math.max(10, file.meta.width)}, des frais s’appliquent.
En effet, nous faisons appel au Robot 🤖/script/run (English) pour interpréter
JavaScript, ce qui sollicite davantage nos machines et ralentit les évaluations de quelques
millisecondes. En contrepartie, vous disposez d’un langage de programmation complet, ce qui rend ces
évaluations bien plus puissantes.