A shell for running JSON-RPC 2.0 queries
Go to file
Přemysl Eric Janouch f6225ac6cc
Warn on unexpected "id" fields
2020-09-01 20:54:23 +02:00
cmake Fix FindLibMagic.cmake 2016-01-16 06:37:56 +01:00
http-parser@5d414fcb4b Bump liberty and http-parser 2017-06-20 14:04:40 +02:00
liberty@1a76b2032e Bump liberty 2020-09-01 19:02:40 +02:00
.gitignore Miscellaneous little changes 2015-02-26 22:56:52 +01:00
.gitmodules Bump liberty 2018-06-24 06:12:16 +02:00
CMakeLists.txt Name change 2020-09-01 19:02:41 +02:00
LICENSE Name change 2020-09-01 19:02:41 +02:00
README.adoc Merge in a JSON-RPC 2.0 test server 2018-10-18 07:49:36 +02:00
config.h.in Rewrite the input layer 2015-12-25 23:38:40 +01:00
json-format.pl json-format.pl: further fixes 2017-01-26 01:35:24 +01:00
json-rpc-shell.c Warn on unexpected "id" fields 2020-09-01 20:54:23 +02:00
json-rpc-test-server.c Name change 2020-09-01 19:02:41 +02:00

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 Dzhuvinovs 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 doesnt say almost anything about underlying transports. The way its implemented here is that every request is sent as a single text message. If it has an "id" field, i.e. its not just a notification, the client waits for a message from the server in response.

Theres 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 Archlinuxs 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.