Inspired by curl-to-Go: Convert curl commands to Go code.
(curl-to-elisp "curl example.com")
;; =>
(url-retrieve-synchronously "http://example.com")
(curl-to-elisp "curl -d 'hello world' example.com")
;; =>
(let ((url-request-method "POST")
(url-request-extra-headers
'(("Content-Type" . "application/x-www-form-urlencoded")))
(url-request-data "hello world"))
(url-retrieve-synchronously "http://example.com"))
To get started, try M-x curl-to-elisp curl -I example.com
, the Emacs Lisp code will be pretty-printed in echo area.
The following options are supported, other options are ignored.
Option | Note |
---|---|
-H, --header <header> |
|
-I, --head |
|
-X, --request <command> |
|
-d, --data <data> |
does not interpret @ as file |
--data-ascii <data> |
|
--data-binary <data> |
|
--data-raw <data> |
|
--data-urlencode <data> |
|
-F, --form <name=content> |
does not interpret @ as file |
--form-string <name=string> |
|
-A, --user-agent <name> |
|
-e, --referer <URL> |
|
--url <url> |
|
-u, --user <user:password> |
does not prompt for a password |
-s, --silent |
Regarding the location header, curl doesn't redirect unless you use -L
,
--location
, however, url-retrieve[-synchronously]
DOES automatically
redirect, to inhibit redirection, let-binding url-max-redirections
, e.g.,
(let ((url-max-redirections 0))
(display-buffer
(url-retrieve-synchronously "http://emacs-china.org")))
curl-to-elisp-httpie-to-elisp
uses curlie to
transform an httpie/curlie command to elisp.
You need to have curlie
binary in your path (or customize
curl-to-elisp-curlie-binary
).
curl to verb
curl-to-elisp-verb
converts curl command to verb request specification.
- Emacs 25.1