@ -417,6 +417,38 @@ Il est aussi plus simple de tester du code organisé de la manière suivante, ca
\label{nestjs2}
\label{nestjs2}
\end{figure}
\end{figure}
\subsubsection{Système d'envoi de mail}
On m'a donné en début de stage la tâche d'implémenter un système d'envoi de mail pour \entity{Mint Service}.
Ce système prend la forme de plusieurs librairies, qui doit remplir les conditions suivantes:
\begin{itemize}
\item Il doit être facilement réutilisable dans d'autres projets.
\item Il doit permettre de changer de fournisseur de service pour l'envoi d'emails sans devoir faire de grands changements du côté des utilisateurs de la librairie.
\item Il doit pouvoir envoyer des emails qui s'affichent de la manière voulue sur la majorités des boîtes mail.
\item Il doit pouvoir envoyer des emails contenant des informations sur l'utilisateur.
\item Il doit permettre de décrire le contenu des emails d'une manière facilement maintenable et réutilisable.
\end{itemize}
Mon travail a commencé par l'analyse de différentes solutions permettant d'adresser les deux dernières conditions.
Par le passé, l'entreprise avait déjà utilisé le moteur \entity{handlebars},
une librairie de recherche et de remplacement de texte, qui permet d'avoir des formes simples de logique,
comme des conditions ou des boucles.
Bien que \entity{handlebars} fonctionne bien pour insérer les informations de l'utilisateur dans les mails,
il ne permet pas de facilement réutiliser du code, qui est souvent complexe afin d'assurer un bon affiche sur les
différents programmes de boîte mail.
J'ai donc cherché à avoir un système de \og composants \fg dans la solution choisie:
ces composants doivent pouvoir être appelés avec différentes valeurs en arguments,
et doivent pouvoir appeler d'autres composants,
permettant ainsi de créer des couches d'abstraction afin de plus rapidement résoudre des problèmes,
et de réutiliser ces abstractions dans des nouveaux contextes.
% TODO: source sur search and replace
J'ai selectionné deux moteurs de recherche et de remplacement de texte (\term{Search and Replace}): \entity{handlebars}\cite{handlebars} et \entity{mustache}\cite{mustache}.