Vieille question, oui ... Mais au cas où quelqu'un googles ceci; une autre option utilise Org Babel et ob-http
... (Peut être installé depuis melpa .)
Avec org-babel
, vous pouvez créer un .org
fichier contenant " http
" des blocs de code. Lorsque ces blocs sont évalués, ils font la demande HTTP et renvoient la réponse comme résultat.
Si ces blocs ont un #+NAME:
attribut " ", vous pouvez utiliser leurs résultats dans n’importe quel autre org-babel
bloc. Cela permet une programmation assez soignée et alphabète utilisant les résultats des requêtes HTTP.
Par exemple, voici un petit document Org illustrant la création d’une requête HTTP et l’analyse du code JSON renvoyé dans Ruby:
* The request
The following is the example request shown on [[https://github.com/zweifisch/ob-http][ob-http's Github page]]...
It isn't anything fancy, but it is a REST API request, and returns
JSON, so it works for the sake of this demonstration:
#+NAME:ob-languages
#+BEGIN_SRC http :pretty
GET https://api.github.com/repos/zweifisch/ob-http/languages
#+END_SRC
#+RESULTS:
: {
: "Emacs Lisp": 7034
: }
Notice how this has a "=#+NAME:=" attribute? This is a name we can use
in other =org-babel= blocks. (As you will see below)
* Using the request
Now that I have an =http= request in an org block with a name... Lets
write something in a completely different language and use our HTTP
request's response:
#+BEGIN_SRC ruby :var langs=ob-languages
require 'json'
JSON.parse(langs)['Emacs Lisp']
#+END_SRC
#+RESULTS:
: 7034
The =:var= keyword allowed me to assign the "=langs=" variable in the
Ruby block to the result of the =ob-languages= block [[The request][above]].
This didn't have to be in Ruby, this could have been any language,
including another =http= block.
Voici à quoi cela ressemble dans org-mode
:
Frapper C-c C-c
sur le bloc du bas (The Ruby) évaluera automatiquement le premier :var
bloc pour sa dépendance (c'est le bit dans l'en-tête du bloc.). Cela signifie que la http
demande est faite en premier, puis que les résultats sont transmis à Ruby pour traitement ultérieur.
Vous pouvez le faire avec autant de blocs que vous le souhaitez et avec autant de langues.
Si cela convient à vos besoins, ob-http
nécessite un peu de peaufinage manuel après l'avoir installé pour le faire fonctionner. (Ne vous inquiétez pas, ce n'est pas tant que ça)
Après l’installation ob-http
, vous devez personnaliser deux variables:, org-src-lang-modes
et org-babel-load-languages
.
Ainsi, en exécutant M-x customize-variable
, vous pouvez personnaliser chacun pour inclure les éléments suivants:
org-src-lang-modes
: Vous voudrez personnaliser cette variable pour inclure un mappage de langue supplémentaire, afin que vous puissiez insérer une valeur supplémentaire à la fin de la liste:
String: http
Symbol: ob-http
Ensuite, vous pouvez C-x C-s
enregistrer cette personnalisation.
org-babel-load-languages
: Vous voudrez ajouter un élément de plus à la liste des org
langues activées . " http
".
Cependant, vous devrez peut-être l'ajouter manuellement à la liste si l'option ne figure pas parmi les options possibles. Pour ce faire, vous pouvez cliquer sur "Etat" et choisir " :
" pour afficher l'expression Lisp ... avant la dernière parenthèse fermante:
(http . t)
Après cela, un rapide C-x C-s
et M-x org-reload
devrait être tout ce dont vous avez besoin ..!