Cloudrail - Guide rapide

CloudRail est une solution d'intégration d'API qui accélère le processus d'intégration d'API tierces dans une application et de leur maintenance. Pour ce faire, il fournit des bibliothèques pour plusieurs plates-formes comportant des couches d'abstraction qui combinent des services similaires derrière une interface commune.

CloudRail - Caractéristiques

Voici une liste de certaines des fonctionnalités les plus importantes de CloudRail -

  • Unified API- CloudRail regroupe plusieurs API Web dans une seule API unifiée. Par exemple, la fonctionupload()fonctionne exactement de la même manière pour Dropbox que pour Google Drive. Vous pouvez facilement intégrer des catégories entières de fournisseurs, par exemple les connexions sociales, ou changer de fournisseur avec une seule ligne de code.

  • API Change Management- Les API changent tout le temps, ce qui entraîne des intégrations interrompues, des clients insatisfaits et encore plus de temps de développement perdu. CloudRail surveille toutes les API et maintient les intégrations. Vous recevez des notifications immédiates sur les modifications et tout ce que vous avez à faire est de mettre à jour la bibliothèque CloudRail avec la dernière version - aucune modification de code requise.

  • API Statistics- Comprenez quelles API et quelles fonctions sont les plus utilisées par vos clients. Obtenez les informations nécessaires pour identifier de nouvelles fonctionnalités ou améliorer les campagnes marketing.

  • Direct Data- Aucune de vos données ne passera jamais un serveur CloudRail. Le système n'utilise pas de middleware hébergé. Toutes les transformations de données se produisent dans la bibliothèque CloudRail qui est intégrée à votre application. Cela signifie aucun problème de confidentialité des données, aucun temps d'arrêt et aucun SPOF supplémentaire.

  • OAuth Made Simple- Faire des authentifications OAuth est une douleur. CloudRail rend les autorisations aussi simples que l'ajout d'une seule ligne de code.

La version gratuite de CloudRail ne peut être utilisée qu'à des fins non commerciales ou pour des tests. Les utilisateurs commerciaux doivent acheter une licence.

Cette section explique comment utiliser le SDK Android de CloudRail.

Installer

Le moyen le plus simple d'installer est via Maven. Si vous utilisez Android Studio avec Gradle, il suffit d'ajouter ce qui suit à votrebuild.gradle file -

dependencies {
   compile 'com.cloudrail:cloudrail-si-android:2.8.1
}

Usage

L'exemple suivant montre comment créer un nouveau dossier et télécharger un fichier à partir des actifs d'une application Android vers le dossier nouvellement créé sur n'importe quel fournisseur de stockage cloud.

java
CloudRail.setAppKey("[CloudRail License Key]");

// CloudStorage cs = new Box(context, "[clientIdentifier]", "[clientSecret]");
// CloudStorage cs = new OneDrive(context, "[clientIdentifier]", "[clientSecret]");
// CloudStorage cs = new GoogleDrive(context, "[clientIdentifier]", "[clientSecret]");
CloudStorage cs = new Dropbox(context, "[clientIdentifier]", "[clientSecret]");

new Thread() {
   @Override
   public void run() {
      cs.createFolder("/TestFolder"); // <---
      InputStream stream = null;
      
      try {
         AssetManager assetManager = getAssets();
         stream = assetManager.open("UserData.csv");
         long size = assetManager.openFd("UserData.csv").getLength();
         cs.upload("/TestFolder/Data.csv", stream, size, false); // <---
      } catch (Exception e) {
         // TODO: handle error
      } finally {
         // TODO: close stream
      }
   }
}.start();

Cette section donne une introduction à l'utilisation du SDK Java de CloudRail.

Installer

Le moyen le plus simple d'installer est via Maven. Il suffit d'ajouter ce qui suit à votrepom.xml fichier -

<dependencies>
   <dependency>
      <groupId>com.cloudrail</groupId>
      <artifactId>cloudrail-si-java</artifactId>
      <version>2.8.0</version>
   </dependency>
</dependencies>

Usage

L'exemple suivant montre comment créer un nouveau dossier et télécharger un fichier de la machine locale vers le dossier nouvellement créé sur n'importe quel fournisseur de stockage cloud.

java
CloudRail.setAppKey("[CloudRail License Key]");

// CloudStorage cs = new Box(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
// CloudStorage cs = new OneDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
// CloudStorage cs = new GoogleDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
CloudStorage cs = new Dropbox(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
new Thread() {
   @Override
   public void run() {
      cs.createFolder("/TestFolder");
      InputStream stream = null;
      
      try {
         stream = getClass().getResourceAsStream("Data.csv");
         long size = new File(getClass().getResource("Data.csv").toURI()).length();
         cs.upload("/TestFolder/Data.csv", stream, size, false);
      } catch (Exception e) {
         // TODO: handle error
      } finally {
         // TODO: close stream
      }
   }
}.start();

Cette section donne une introduction sur l'utilisation du SDK Node.js de CloudRail.

Installer

Le moyen le plus simple d'installer est via NPM. Utilisez simplement la commande suivante -

npm install cloudrail-si

Usage

L'exemple suivant montre comment créer un nouveau dossier et télécharger un fichier de la machine locale vers le dossier nouvellement créé sur n'importe quel fournisseur de stockage cloud.

javascript
const cloudrail = require("cloudrail-si");
cloudrail.Settings.setKey("[CloudRail License Key]");

// let cs = new cloudrail.services.Box(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
// let cs = new cloudrail.services.OneDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
// let cs = new cloudrail.services.GoogleDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
let cs = new cloudrail.services.Dropbox(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");

cs.createFolder("/TestFolder", (err) => { // <---
   if (err) throw err;
   let fileStream = fs.createReadStream("UserData.csv");
   let size = fs.statSync("UserData.csv").size;
   
   cs.upload("/TestFolder/Data.csv", fileStream, size, false, (err) => { // <---
      if (err) throw err;
      console.log("Upload successfully finished");
   });
});

Cette section explique comment utiliser le SDK iOS de CloudRail.

Installer

Le moyen le plus simple d'installer est via CocoaPods. Ajoutez simplement ce qui suit à votrepodfile -

pod "cloudrail-si-ios-sdk"

Assurez-vous que "use_frameworks!" l'indicateur est défini et exécuté

Pod install

Usage

Les exemples suivants montrent comment télécharger un fichier à partir de n'importe quel fournisseur de stockage cloud dans Objective-C et Swift.

objective-c
// self.service = [[CROneDrive alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret" redirectUri:@"REDIRURL" state:@"CRSTATE"];
// self.service = [[CRGoogleDrive alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret" redirectUri:@"REDIRURL" state:@"CRSTATE"];
// self.service = [[CRBox alloc] initWithClientId:@"clientIdentifier" clientSecret:@"clientSecret" redirectUri:@"REDIRURL" state:@"CRSTATE"];

[CRCloudRail setAppKey:@"CLOUDRAIL_API_KEY"];
self.service = [[CRDropbox alloc] initWithClientId:@"clientIdentifier" 
   clientSecret:@"clientSecret" redirectUri:@"REDIRURL" state:@"CRSTATE"];

NSInputStream * object = [self.service downloadFileWithPath:@"/mudkip.jpg"];
//READ FROM STREAM

swift
//let cloudStorage : CloudStorageProtocol = Box.init(clientId: "ClientID", clientSecret: "ClientSecret")
//let cloudStorage : CloudStorageProtocol = GoogleDrive.init(clientId: "ClientID", clientSecret: "ClientSecret")
//let cloudStorage : CloudStorageProtocol = OneDrive.init(clientId: "ClientID", clientSecret: "ClientSecret")

CRCloudRail.setAppKey("CLOUDRAIL_API_KEY")
let cloudStorage : CloudStorageProtocol = Dropbox.init(
   clientId: "ClientID", clientSecret: "ClientSecret")
do {
   let inputStream = try cloudStorage.downloadFileWithPath("/TestFolder/Data.csv")
} catch let error{
   print("An error: \(error)")
}
//READ FROM STREAM

Cette section présente le cas d'utilisation de la mise en œuvre d'une connexion sociale pour une application (Web). Ce chapitre ne fournit qu'un aperçu de la connexion sociale et dans les chapitres suivants, nous montrerons comment le configurer pour Facebook et Twitter, mais il est très facile d'ajouter d'autres services comme Google Plus, LinkedIn, GitHub, Instagram, Slack, Windows Live et Yahoo. Nous utiliserons Node.js avec Express côté serveur.

Pourquoi Social Login?

L'une des raisons les plus courantes pour lesquelles les développeurs de logiciels et les architectes ajoutent un backend à leur (s) frontend (s) est le besoin de gestion des utilisateurs. Pour que la gestion des utilisateurs fonctionne, les fonctionnalités d'inscription et de connexion sont essentielles. Dans le passé, la plupart des applications avaient leur propre système d'authentification et chaque utilisateur devait donc créer activement un compte en fournissant une adresse e-mail, un mot de passe et d'autres informations.

Non seulement cela est encombrant pour l'utilisateur, mais aussi notoirement peu sûr. De nombreux utilisateurs utiliseront le même mot de passe partout, appelépassword fatigue, et avec chaque partie qui a le mot de passe stocké, la probabilité qu'il soit volé augmente.

Dernièrement, de plus en plus de services proposent une «connexion sociale» («Connexion avec Facebook», «Connexion avec GitHub», etc.) qui améliore l'expérience utilisateur en permettant aux utilisateurs de s'inscrire / se connecter avec leur compte déjà existant sur une plate-forme populaire.

Enregistrer une application CloudRail

Utilisez ce lien pour créer une nouvelle application (vous devrez peut-être d'abord vous connecter) - https://developers.cloudrail.com Vous pouvez trouver votre clé de licence CloudRail dans le résumé de l'application.

Enregistrer une application Facebook

Utilisez ce lien pour créer une nouvelle application (vous devrez peut-être d'abord vous connecter) - https://developers.facebook.com/apps/. Cliquez ensuite sur le bouton "Ajouter une nouvelle application", choisissez "Configuration de base" et créez une nouvelle application. Dans la section du tableau de bord, vous trouverez votre clé d'application (ID client) et votre secret d'application (secret client).

Allez dans «Ajouter un produit» et sélectionnez «Connexion Facebook». Définissez l'URI de redirection sur'http://localhost:12345/auth/redirect/facebook'.

Enregistrer une application Twitter

Utilisez ce lien pour créer une nouvelle application (vous devrez peut-être d'abord vous connecter) - https://apps.twitter.com/Cliquez sur le bouton "Créer une nouvelle application" et remplissez les informations requises. Cliquez sur 'Clés et jetons d'accès' et vous trouverez votre clé d'application (ID client) et votre secret d'application (secret client). Définissez l'URI de redirection sur'http://localhost:12345/auth/redirect/twitter'.

Initialiser un nouveau projet Node.js

Assurez-vous que Node.js est installé, créez un nouveau dossier, initialisez le package.json et installer Express et CloudRail en émettant les commandes suivantes dans la console (ou les commandes équivalentes sur les systèmes d'exploitation non Unix) -

mkdir myProject
cd myProject
npm init
npm i --save express cloudrail-si

Créez un nouveau fichier pour votre code serveur dans le dossier créé et ajoutez ce qui suit pour importer et configurer Express et CloudRail -

javascript
const express = require("express");
const cloudrail = require("cloudrail-si");
const app = express();
cloudrail.Settings.setKey("[CloudRail license key]");

Maintenant, nous continuons en écrivant une fonction qui instanciera les services que nous voulons utiliser pour la connexion sociale -

javascript
function makeService(name, redirectReceiver) {
   let service;
   switch (name) {
      case "twitter":
         service = new cloudrail.services.Twitter(
            redirectReceiver,
            "[Twitter Client ID]",
            "[Twitter Client Secret]",
            "http://localhost:12345/auth/redirect/twitter"
         );
         break;
      case "facebook":
         service = new cloudrail.services.Facebook(
            redirectReceiver,
            "[Facebook Client ID]",
            "[Facebook Client Secret]",
            "http://localhost:12345/auth/redirect/facebook",
            "state"
         );
         break;
      // More services from the Profile interface can be added here, 
      //the services above are just examples
      default: throw new Error("Unrecognized service");
   }
   return service;
}

Nous avons besoin d'un moyen de garder une trace des identités des utilisateurs. Cela se fait normalement dans une base de données mais pour garder ce tutoriel court, nous utiliserons un objet qui agit comme unpseudo-database.

Toutes ses données sont conservées en mémoire et sont donc perdues au redémarrage du serveur -

javascript
const users = {
   records: {}
};
users.find = (id) ⇒ {
   return users.records[id];
};
users.save = (id, data) ⇒ {
   users.records[id] = data;
};

Ensuite, nous enregistrons le point de terminaison du serveur qui gérera le début du flux de connexion sociale -

javascript
app.get("/auth/start/:serviceName", (req, res) ⇒ {
   let serviceName = req.params["serviceName"];
   
   let redirectReceiver = (url, state, callback) ⇒ {
      res.redirect(url);
   };
   let service = makeService(serviceName, redirectReceiver);
   service.login();
});

Le service avec lequel nous avons démarré la connexion sociale sera redirigé vers notre serveur et nous devons gérer cette redirection.

Après avoir obtenu un identifiant unique pour l'utilisateur, nous vérifions si nous avons déjà vu cet utilisateur. Si oui, alors nous le saluons avec son nom. Sinon, nous obtenons le nom du réseau social et enregistrons un nouvel utilisateur -

javascript
app.get("/auth/redirect/:serviceName", (req, res) ⇒ {
   let serviceName = req.params["serviceName"];
   
   let redirectReceiver = (url, state, callback) ⇒ {
      callback(undefined, "http://bla.com" + req.url); 
      // The callback expects a complete URL but only the query matters
   };
	let service = makeService(serviceName, redirectReceiver);
   service.getIdentifier((err, identifier) ⇒ {
      if (err) res.status(500).send(err);
      let user = users.find(identifier);
      
      if (user) {
         res.send("Welcome back " + user.name);
      } else {
         service.getFullName((err, name) ⇒ {
            if (err) res.status(500).send(err);
            users.save(identifier, {
               name: name
            });
            res.send("Welcome greenhorn!");
         });
      }
   });
});

Enfin, nous faisons écouter le serveur sur le port 12345 -

javascript
app.listen(12345);

Nous pouvons maintenant démarrer l'application et la tester dans notre navigateur local.

Si vous accédez à http://localhost:12345/auth/start/facebook vous allez démarrer le flux de connexion Facebook.

Si vous accédez à http://localhost:12345/auth/start/twitter vous allez démarrer le flux de connexion Twitter.

Après vous être connecté au service et accordé l'accès, vous verrez "Welcome greenhorn!" si vous le faites pour la première fois et "Bienvenue à nouveau [votre nom]" lors de visites consécutives.

Pour l'intégrer dans un site Web réel, vous devez, par exemple, y inclure les logos du fournisseur de services et créer un lien entre les logos et les URL respectives.

De plus, la pseudo-base de données doit être remplacée par une vraie. Et voilà, connexion sociale pour jusqu'à 9 fournisseurs différents!