Pergunta antiga, sim ... Mas no caso de alguém pesquisar no Google; outra opção é usar o Org Babel e ob-http
... (Pode ser instalado a partir do melpa .)
Com org-babel
, você pode criar um .org
arquivo contendo " http
" blocos de código. Quando esses blocos são avaliados, eles fazem a solicitação HTTP e retornam a resposta como resultado.
Se esses blocos tiverem um #+NAME:
atributo " ", você poderá usar os resultados em qualquer outro org-babel
bloco. Isso permite uma programação alfabética bastante elegante usando os resultados de solicitações HTTP.
Por exemplo, aqui está um pequeno documento organizacional demonstrando a solicitação HTTP e a análise do JSON retornado no 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.
Isto é o que parece em org-mode
:
Bater C-c C-c
no bloco inferior (o Ruby) avaliará automaticamente :var
o bloco superior quanto à sua dependência (esse é o bit no cabeçalho do bloco). Isso significa que a http
solicitação é feita primeiro e, em seguida, os resultados são passados ao Ruby para processamento adicional.
Você pode fazer isso com quantos blocos desejar e com quantos idiomas.
Se isso atender às suas necessidades, será ob-http
necessário um pouco de ajustes manuais após a instalação para que funcione. (Não se preocupe, não é tanto assim)
Após a instalação ob-http
, você precisa personalizar duas variáveis:, org-src-lang-modes
e org-babel-load-languages
.
Portanto, executando M-x customize-variable
, você pode personalizar cada um para incluir o seguinte:
org-src-lang-modes
: Você deseja personalizar essa variável para incluir mais um mapeamento de idioma, para poder inserir mais um valor no final da lista:
String: http
Symbol: ob-http
Então você pode C-x C-s
salvar essa personalização.
org-babel-load-languages
: Você deseja adicionar mais um item à lista de org
idiomas ativados . " http
"
No entanto, pode ser necessário adicioná-lo à lista manualmente, se a opção não estiver nas opções possíveis, você pode fazer isso clicando em "State" e escolhendo " :
" para mostrar a expressão Lisp ... Em seguida, adicione o seguinte apenas antes do último parêntese de fechamento:
(http . t)
Depois disso, um rápido C-x C-s
e M-x org-reload
deve ser tudo o que você precisa ..!