Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ibizaman/jsondispatch

Server program that accepts HTTP requests with a JSON payload and forwards the request to another program after transformation.
https://github.com/ibizaman/jsondispatch

aria2c chrome-extension firefox-addon json-payload magnet-url python3

Last synced: about 2 months ago
JSON representation

Server program that accepts HTTP requests with a JSON payload and forwards the request to another program after transformation.

Awesome Lists containing this project

README

        

# 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)

# 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.

## Use Cases

### 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).

## Install & Use

### 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.

### 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).

## Develop

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

### Files Layout

## License

The icon was taken from , it's under MIT License.