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.2.tar.gz (5.5 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for jsondispatch-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2a55b85704164c1a8377ba42afd97bbe200d794a27de69f10145fb4aa5cbea72
MD5 dff60dd8103fab4a4e0d99b54bde6a86
BLAKE2b-256 f3bba6771d86cc4d0b32c36db1eca437bd75e84954af31a2508605c294484b06

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