Skip to main content

Dispatch commands with JSON HTTP requests

Project description


# Table of Contents

1. [Json Dispatch](#org1ebd606)
1. [Use Cases](#orgd2b20aa)
1. [Send file to aria2 and set download dir based on category](#orgb7f7725)
2. [Install & Use](#org902adaf)
1. [Server](#org5b297f7)
2. [Browser extension](#orgdb0ace7)
3. [Develop](#orgc64c5ed)
1. [Files Layout](#orgdc9d277)
4. [License](#org80ce1fa)


<a id="org1ebd606"></a>

# Json Dispatch

Server program written in python that accepts HTTP POST requests with a JSON
payload and forwards the request to another program, after transforming it in a
configurable way. Quite generic, but that's the goal. See [1.1](#orgd2b20aa) for concrete
examples.

`Python 3.6` supported only, although other `Python 3.X` versions should work
too.

Also provides a Firefox and Chrome extension that talks to the server and allows
you to right click on a URL/link in your browser and "send it to" the server.


<a id="orgd2b20aa"></a>

## Use Cases


<a id="orgb7f7725"></a>

### Send file to aria2 and set download dir based on category

Config file `/etc/jsondispatch/jsondispatch.conf`:

cors:
domain: '*'

commands:
aria2:
url: http://localhost:6800/jsonrpc
rpc_secret: mYs3Cr3t

triggers:
download_program_uri:
- command: aria2
method: addUri
arguments:
url: {url}
dir: /srv/backups/programs

JSON payload to send to the server with URL ending with
`/trigger/download_program_uri` with POST request:

{
"url": "magnet:?xt=urn:btih:204a1789dd04e4d8f5a4e098e8f777794888f4ad&dn=archlinux-2017.12.01-x86_64.iso&tr=udp://tracker.archlinux.org:6969&tr=http://tracker.archlinux.org:6969/announce"
}

When sending the above POST request, jsondispatch will call the `addUri` RPC
method of aria2 with the given magnet URL and the hardcoded `dir` argument.

Or just use the browser extension which does this for you with a right click on
a magnet URL (or any link for that matter).


<a id="org902adaf"></a>

## Install & Use


<a id="org5b297f7"></a>

### Server

To install the server, clone this repo, `cd` in the repo and run:

pip install -e "."

Create a configuration file in `/etc/jsondispatch/jsondispatch.conf` (by
default, `--config` option lets you setup a custom file location). See [1.1](#orgd2b20aa)
for example configurations.

To run the server, `cd` in the repo and run:

python .

You can change the default port and config file location, give the `--help`
argument for detailed instructions.


<a id="orgdb0ace7"></a>

### Browser extension

For Firefox, go to `about:debugging` and click on `Load Temporary Add-On`.
Browse to the `browserextension/` folder in this repo and select the
`manifest.json` file. Now that the addon is added, go to the addons settings
page `about:addons` and fill-in the server URL.

If you're running the server locally with default port, then the URL is
`http://127.0.0.1:8850`.

For Chrome, go to `chrome://extensions/`, enable `Developer mode`, click on
`Load unpacked extension`. Browse to the `firefox/` folder in this repo and
click on `open`. Now that the addon is added, click on the addon's `option`
button and fill-in the server URL.

Now you can just right click on a link and go in the submenu `Send to Json
Dispatch`, then choose one of the options which correspond to the configured
triggers. Of course, first make sure you installed and started the server as
explained in [1.2.1](#org5b297f7).


<a id="orgc64c5ed"></a>

## Develop

pip install -e ".[dev,test]"


<a id="orgdc9d277"></a>

### Files Layout


<a id="org80ce1fa"></a>

## License

The icon was taken from <https://feathericons.com/>, it's under MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsondispatch-0.1.1.tar.gz (3.5 kB view details)

Uploaded Source

File details

Details for the file jsondispatch-0.1.1.tar.gz.

File metadata

  • Download URL: jsondispatch-0.1.1.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jsondispatch-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e440faabf75322a2589b42b963fb7b73c54ab0ee8be7be1a5fb20810de39de44
MD5 f97dfe97182f209549faacfc1b94fe2d
BLAKE2b-256 519c341c902c53a2f0aae8716fa3cf092a0098d80b30765f7e35bfa015257b84

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page