OneSpan Signe Comment: Créer et envoyer un paquet avec REST en Rubis

Haris Haidary, août 31, 2016

Ruby On Rails est un cadre de développement d'applications web écrit en langue Ruby. Il est conçu pour faciliter le développement d'applications web en vous permettant d'écrire moins de code tout en accomplissant plus que beaucoup d'autres langues et frameworks. Ruby On Rails est basé sur le modèle Model-View-Controller qui sépare votre application en trois parties :

  • Les modèles sont l'endroit où les objets de données de l'application sont stockés.
  • Les Vues sont la représentation de ses modèles.
  • Le Contrôleur est au cœur de tout, traitant les demandes des clients, initiant des changements dans les modèles, etc. En d'autres termes, le contrôleur est le décideur entre le modèle et la vue.

Dans ce blog, je vais vous montrer comment créer et envoyer un paquet avec OneSpan Sign REST API dans Ruby.

Le code

Dans mon exemple, je vais utiliser Ruby 2.3.1. Si vous ne l'avez pas déjà installé, vous pouvez le télécharger à partir de leur site officiel, ici. Vous devrez également télécharger la trousse d'outils de développement afin d'utiliser le module JSON (plus sur ce sujet plus tard). Inclus dans le lien est un tutoriel sur la façon d'installer la boîte à outils développeur. Le code d'exemple complet est disponible sur le Developer Community Code Share.

La première chose que vous voudrez faire est d'installer le module 'json'. Cela vous permettra d'éparsser les cordes formatées JSON. Ouvrez votre invite de commande et entrez la ligne suivante :

gem install json --platform-ruby

install_json

Maintenant, dans votre éditeur de texte préféré, créez un nouveau nom de fichier "CreateAndSendPackage.rb" et enregistrez-le dans un endroit de votre choix. Allez-y et copiez le code ci-dessous. J'examinerai la façon de le faire plus en détail plus en détail.

besoin de 'net/http'
besoin de 'uri'
besoin de 'json'
besoin de 'OpenSSL'

uri - URI.parse("https://sandbox.esignlive.com/api/packages/")
BOUNDARY - "---011000010111000011010100101001001"

json - File.read ('payload.json')

fichier "sample_contract.pdf"

Créer le corps vide de poteau. Document PDF et charge utile JSON à ajouter. 
post_body []

Ajouter le document PDF
post_body "--#{BOUNDARY}\r\n">
post_body "Content-Disposition: form-data; name=\"file\"; filename=\"#{File.basename(file)}\"\r\n">
post_body "Content-Type: application/pdf\r\n\r\n">
post_body File.open(file, 'rb') { |io| io.read }>

Ajouter le JSON
post_body "--#{BOUNDARY}\r\n">
post_body "Content-Disposition: form-data; name=\"payload\"\r\n\r\n">
post_body json>
post_body "\r\n\r\n--#{BOUNDARY}--\r\n">

Créer les objets HTTP
http - Net::HTTP.new(uri.host, uri.port)
http.use_ssl vrai
http.verify_mode - OpenSSL::SSL::VERIFY_NONE
Demande net::HTTP::Post.new(uri.request_uri)
demande ["Autorisation"] - "your_api_key_here de base"
demande ["Accepter"] - "application/json"
demande ["Content-Type"] - "multipart/form-data; frontière-BOUNDARYMDBOUNDARYmD "
request.body et post_body.join

Envoyer la demande
réponse http.demande(demande)
met response.read_body

Maintenant, passons en revue le code plus en détail. Les deux premières lignes importent les modules nécessaires pour effectuer des appels REST.

besoin de 'net/http'
besoin de 'uri'
besoin de 'json'
besoin de 'OpenSSL'

La ligne suivante est l'URL de point de terminaison où vous allez envoyer votre demande POST à.

uri - URI.parse("https://sandbox.esignlive.com/api/packages/")

Ensuite, la chaîne JSON qui définit votre paquet est lue. Vous construisez généralement votre chaîne JSON dynamiquement par rapport à avoir une grande chaîne comme dans cet exemple. J'ai choisi de le faire pour la simplicité.

json - File.read ('payload.json')

Nous allons compiler toutes les parties du corps dans un tableau, puis les rejoindre en une seule chaîne. Par conséquent, cette méthode lit le fichier donné dans la mémoire tout à la fois. Voici comment vous construire le corps de votre demande HTTP:

post_body "--#{BOUNDARY}\r\n">
post_body "Content-Disposition: form-data; name=\"file\"; filename=\"#{File.basename(file)}\"\r\n">
post_body "Content-Type: application/pdf\r\n\r\n">
post_body File.open(file, 'rb') { |io| io.read }>

Ajouter le JSON
post_body "--#{BOUNDARY}\r\n">
post_body "Content-Disposition: form-data; name=\"payload\"\r\n\r\n">
post_body json>
post_body "\r\n\r\n--#{BOUNDARY}--\r\n">

Ensuite, nous créons un nouvel objet Net::HTTP sans ouvrir une connexion TCP ou une session HTTP et définir les en-têtes appropriés. Assurez-vous d'utiliser les paramètres pour le SSL, comme indiqué ci-dessous. Dans le cas contraire, une exception sera lancée.

http - Net::HTTP.new(uri.host, uri.port)
http.use_ssl vrai
http.verify_mode - OpenSSL::SSL::VERIFY_NONE
Demande net::HTTP::Post.new(uri.request_uri)
demande ["Autorisation"] - "your_api_key_here de base"
demande ["Accepter"] - "application/json"
demande ["Content-Type"] - "multipart/form-data; frontière-BOUNDARYMDBOUNDARYmD "
request.body et post_body.join

Enfin, vous faites votre demande HTTP et lisez la réponse renvoyée par OneSpan Sign.

réponse http.demande(demande)
met response.read_body

Exécution de votre code

Ouvrez votre invite de commande et modifiez l'annuaire actuel à l'endroit où vous avez enregistré votre fichier "CreateAndSendPackage.rb". Ensuite, entrez la ligne suivante:

rubis CreateAndSendPackage.rb Rubis CreateAndSendPackage.rb Rubis CreateAndSendPackage.

OneSpan Sign retournera ensuite un id paquet en réponse, qui sera imprimé à la fenêtre de commande rapide.

REST dans Ruby eSignLive

Si vous avez des questions concernant ce blog ou toute autre chose concernant l'intégration oneSpan Sign dans votre application, visitez les forums de la communauté des développeurs: https://developer.OneSpan.com. C'est moi qui l'ai fait. Merci de lire! Si vous avez trouvé ce message utile, s'il vous plaît le partager sur Facebook, Twitter, ou LinkedIn.

Haris Haidary
Évangéliste technique junior
LinkedIn - France Twitter (en) 

OneSpan Sign Developer Community

OneSpan Sign Developer Community

Rejoignez la communauté OneSpan Sign Developer! Forums, blogs, documentation, téléchargements SDK, et plus encore.

Joignez-vous aujourd'hui