Skip to main content

Datasette plugin to write to database via verified webhooks

Project description

datasette-webhook-write

PyPI Changelog Tests License

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

datasette_webhook_write-0.5.1.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datasette_webhook_write-0.5.1-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

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

Hashes for datasette_webhook_write-0.5.1.tar.gz
Algorithm Hash digest
SHA256 a5f6f795e95ac5f449eac7985e145f46120150d75f3b791273ad579943b567a7
MD5 6f7ff330557ebe5727370aa95c5d9b2c
BLAKE2b-256 4b65aceaa3424a8b4d66ecc5b9e72af5619f41a061a30522027415e27f42e732

See more details on using hashes here.

File details

Details for the file datasette_webhook_write-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for datasette_webhook_write-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c844f28de56f9eada14b26d6e6ec378ab65784100e1b973e5a56e4bc7ea59f90
MD5 355d02e17c1d06bd127b313cd571f37e
BLAKE2b-256 a6a78c86ca9142e5c14c776384e5840629d5860376b2fdf35c7e7b70aa22ac54

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