Přemysl Eric Janouch 45d023147a | ||
---|---|---|
cmake | ||
http-parser@5d414fcb4b | ||
liberty@1a76b2032e | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
LICENSE | ||
README.adoc | ||
config.h.in | ||
json-format.pl | ||
json-rpc-shell.c | ||
json-rpc-test-server.c |
README.adoc
json-rpc-shell
json-rpc-shell is a simple shell for running JSON-RPC 2.0 queries.
This software has been created as a replacement for the following shell, which is written in Java: http://software.dzhuvinov.com/json-rpc-2.0-shell.html
Features
In addition to most of the features provided by Vladimir Dzhuvinov’s shell you get the following niceties:
-
configurable JSON syntax highlight, which with prettyprinting turned on helps you make sense of the results significantly
-
ability to pipe output through a shell command, so that you can view the results in your favourite editor or redirect them to a file
-
ability to edit the input line in your favourite editor as well with Alt+E
Supported transports
-
HTTP
-
HTTPS
-
WebSocket
-
WebSocket over TLS
WebSockets
The JSON-RPC 2.0 spec doesn’t say almost anything about underlying transports. The way it’s implemented here is that every request is sent as a single text message. If it has an "id" field, i.e. it’s not just a notification, the client waits for a message from the server in response.
There’s no support so far for any protocol extensions, nor for specifying the higher-level protocol (the "Sec-Ws-Protocol" HTTP field).
Packages
Regular releases are sporadic. git master should be stable enough. You can get a package with the latest development version from Archlinux’s AUR.
Building and Usage
Build dependencies: CMake, pkg-config, help2man,
liberty (included), http-parser (included)
Runtime dependencies: libev, Jansson, cURL, openssl,
readline or libedit >= 2013-07-12,
$ git clone --recursive https://git.janouch.name/p/json-rpc-shell.git $ mkdir json-rpc-shell/build $ cd json-rpc-shell/build $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug $ make
To install the application, you can do either the usual:
# make install
Or you can try telling CMake to make a package for you. For Debian it is:
$ cpack -G DEB # dpkg -i json-rpc-shell-*.deb
Note that for versions of CMake before 2.8.9, you need to prefix cpack
with
fakeroot
or file ownership will end up wrong.
Run the program with --help
to obtain usage information.
Test server
If you install development packages for libmagic, an included test server will
be built but not installed which provides a trivial JSON-RPC 2.0 service with
FastCGI, SCGI, and WebSocket interfaces. It responds to the ping
method.
Contributing and Support
Use https://git.janouch.name/p/json-rpc-shell to report bugs, request features,
or submit pull requests. git send-email
is tolerated. If you want to discuss
the project, feel free to join me at ircs://irc.janouch.name, channel #dev.
Bitcoin donations are accepted at: 12r5uEWEgcHC46xd64tt3hHt9EUvYYDHe9
License
This software is released under the terms of the 0BSD license, the text of which is included within the package along with the list of authors.