Datasette plugin to write to database via verified webhooks
Project description
datasette-webhook-write
Datasette plugin to write to database via verified webhooks
Installation
Install this plugin in the same environment as Datasette.
$ datasette install datasette-webhook-write
Usage (datasette/receiving side)
This plugin allows writing to a datasette database via hmac-signed http POST calls.
Example for metadata.yml (for usage to receive texts from https://nlg.ax/):
plugins:
datasette-webhook-write:
webhook_secret:
"$env": "WEBHOOK_SECRET"
http_header_name: "x-myax-signature"
database_name: "example"
table_name: "generated_texts"
use_pk:
- "uid"
- "collection_id"
WEBHOOK_SECRET is set as environment variable.
The url to upload to the datasette instance is /-/webhook-write/.
Usage (pushing side)
The json data pushed has to be signed with the WEBHOOK_SECRET and added to the headers of the POST call.
Generate the hmac signature (where document is the data you want to send, and WEBHOOK_SECRET is the secret only pushing+receving parties should know):
digest = hmac.new(
key=WEBHOOK_SECRET.encode(),
msg=json.dumps(document).encode(),
digestmod=hashlib.sha1,
)
header = {
"X-SIGNATURE": f"sha1={digest.hexdigest()}",
}
The pushed data is written to the database only when secret+document are generating the same digest.
Development
To set up this plugin locally, first checkout the code. Then create a new virtual environment:
cd datasette-webhook-write
python -m venv venv
source venv/bin/activate
Now install the dependencies and test dependencies:
python -m pip install -e '.[test]'
To run the tests:
python -m pytest
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file datasette_webhook_write-0.5.1.tar.gz.
File metadata
- Download URL: datasette_webhook_write-0.5.1.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5f6f795e95ac5f449eac7985e145f46120150d75f3b791273ad579943b567a7
|
|
| MD5 |
6f7ff330557ebe5727370aa95c5d9b2c
|
|
| BLAKE2b-256 |
4b65aceaa3424a8b4d66ecc5b9e72af5619f41a061a30522027415e27f42e732
|
File details
Details for the file datasette_webhook_write-0.5.1-py3-none-any.whl.
File metadata
- Download URL: datasette_webhook_write-0.5.1-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c844f28de56f9eada14b26d6e6ec378ab65784100e1b973e5a56e4bc7ea59f90
|
|
| MD5 |
355d02e17c1d06bd127b313cd571f37e
|
|
| BLAKE2b-256 |
a6a78c86ca9142e5c14c776384e5840629d5860376b2fdf35c7e7b70aa22ac54
|