Comment utiliser une campagne déjà réalisée et envoyer un mail déjà préparé, tout en profitons du moteur déjà pensé par ActiveCampain ?
C’est la question que nous allons répondre aujourd’hui.
Nous voici sur la première étape pour se connecter à l’api. Nous sommes mêmes allés jusqu’à la mise en place d’un module dédié au requêtage de l’api !
Première étape : RTFM
RTFM : Read Th Fucking Manuel. Ok, en moins violent, ça donne : apprend à lire la documentation avec de demander.
Et c’est une des compétences clefs en fait pour monter en compétence sur : l’autonomie.
On commence par la documentation Active Campain.
On y découvre :
- La nécessité de passer un header, et d’y intégrer un token pour s’authentifier.
- Des exemples de code en node.js : ça c’est cool ! Et une proposition d’utiliser le module request
De la volonté de faire un module à part entière
Un module, c’est :
- installable avec npm install {nom du module}
- référençable avec require(“chemin du module ou nom du module”)
- à minimum un fichier et l’utilisation de module.exports en fin de fichier
Nous trouvons aussi une différence entre les modules scope ou non scope.
La documentation officielle: https://docs.npmjs.com/creating-node-js-modules.
Module scope
https://docs.npmjs.com/about-scopes
Mise à jour : npm install npm@latest –g
Module non scope
pas publiable sur le Enterprise registery
https://docs.npmjs.com/creating-and-publishing-unscoped-public-packages
Choix avec export de la classe
Nous avons décidé d’avoir une première classe : Api.
Pour se faire, nous allons créer une vraie class javascript, à la norme ECMAScript2015 (V6).
Ainsi, on va pouvoir instancier la classe par la suite
Nous pouvons alors faire :
module.exports = Api;
Séparation des responsabilités
Au bout de deux requêtes (récupérer les domaines, et ajouter un contact), on voit que l’on a la même notion : l’appel vers l’api via une Promise.
Ainsi, au lieu de surcharger les responsabilités de la classe Api, nous allons créer une classe (un module en fait) : Sender.
Son but : gérer l’appel vers l’api et le retour des données (et aussi les erreurs).
Pour faciliter l’utilisation de l’api : on va utiliser des paramètres par défaut
ma_fonction(param=mavaleurpardefaut)
Puis, nous avons eu besoin d’ajouter une propriété dynamiquement.
Nous avons utilisé le Object.defineProperty
Object.defineProperty(object1, ‘property1’, {
value: 42,
writable: false
});
Cependant, en retravaillant un peu la classe, nous sommes arrivés à découvrir d’où venait le problème :
Il faut passer le content de l’objet à POSTer en json, donc utiliser : JSON.stringify.
Et voilà, le post avec request fonctionne !
A très vite pour la suite de l’aventure, et le lien vers le github