Connectons-nous à l’api ActiveCampain avec Node.js–Etape 1–Des défis pour nous les développeurs

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 :

  1. La nécessité de passer un header, et d’y intégrer un token pour s’authentifier.
  2. 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

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Fonctions/Valeurs_par_d%C3%A9faut_des_arguments

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 Smile

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639