A simple framework/cli tool to setup and sync (Webex Teams) API webhooks
Project description
WebhookSimple
A simple framework/cli tool to setup and sync (Webex Teams) API webhooks
Free software: MIT license
Documentation: https://webhooksimple.readthedocs.io.
Features
Create, update and delete (webex teams) webhooks from a yaml file
Modular architecture makes it suitable for other APIs as well
How to Use
WebhookSimple is a simple (and open source) python framework/command line tool that allows you to quickly describe your desired Webex Teams web hooks and then creates or synchronises them for you.
WebhookSimple requires two files from you. vars.yml and hooks.yml
vars.yml specifies the different variables while hooks.yml lets you specify the web hooks itself.
A web hook always looks like this (in hooks.yml)
---
hooks:
- name: test hook 1
resource: "messages"
event: "created"
target_url: "https://your_url_here"
Make sure that the name of your web hook is always unique since this is what webhookSimple will use to identify and synchronise your webhooks. Your ::vars.yml:: must include an adapter that specifies the kind of api we are interacting with as well as the authentication details. Leave this to the provided parser.WebexTeamsWebhookManager for now and add the access token in the correct spot.
vars.yml:
# vars file. The adapter section **needs** to be here
adapter:
name: WebexTeamsWebhookManager
authentication:
access_token: your access token here
parameters:
# Add your variables from here on
urls:
- https://www.cisco.com
- https://www.google.com
You can now setup, purge, list, export or sync your webhooks.
setup will delete all webhooks currently present for this bot and create new ones based on the hooks.yml file.
sync will update all existing webhooks based on the nameattribute and create those not present. It will not delete webhooks that are registered on the server.
purgewill delete all webhooks without creating new ones
listwill list all webhooks currently registered
export will save all your currently active webhooks to a .yml file
Invoke the module by running
$ ls
hooks.yml vars.yml
$ python3 -m webhooksimple setup
Taking it one step further
Setting up web hook from a command line and based of a configuration file is already pretty cool and convenient. But what if we have ten webhooks and need to update the target_url on all of them? We’d have to manually edit all the web hook entries in ::hooks.yml::. This is where the ::vars.yml:: file comes into play. ::hooks.yml:: is not a simple configuration file but rather a Jinja2 template of a configuration file. What you can do is this:
vars.yml
---
# Note: Adapter part (see above) omited for bravity
url_prefix: https://my_url_base
hooks.yml:
---
hooks:
- name: test hook 1
resource: "messages"
event: "created"
target_url: "https://{{ url_prefix }}/messages"
But this is not all. Those that worked with jinja2 before probably already know what is coming next. You can also add some (generator) logic here. Lets say we want to create a debug and a production version of our web hook. We can do this by doing the following:
vars.yml:
---
# Note: Adapter part (see above) omited for bravity
envs:
- name: production
url: https://my_production_prefix
- name: development
url: https://my_development_prefix
hooks.yml:
---
hooks:
{% for env in envs %}
- name: {{ env.name }} message hook
resource: "message"
event: "created"
target_url: {{ env.url }}/messages
{% endfor %}
Or you want to setup the same web hook for different urls. This would look something like this
vars.yml:
---
# Note: Adapter part (see above) omited for bravity
urls:
- https://url_number_1
- https://url_number_2
- https://url_number_3
hooks.yml:
---
hooks:
{% for url in urls %}
- name: "hook for {{ url }}"
resource: "message"
event: "created"
target_url: {{ url }}
{% endfor %}
Happy programming! You can get WebhookSimple by running
$ pip3 install webhooksimple
You have questions or found a bug? Feel free to hit me up on twitter @squ4rks.
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2019-07-12)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file webhooksimple-0.1.2.tar.gz
.
File metadata
- Download URL: webhooksimple-0.1.2.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9e87b2974c0a26fb0b1d184dba0ee2cd5aafdd71664a490752be2eca88451c2 |
|
MD5 | de6d7e67cb4b5040cac22701aba9eec6 |
|
BLAKE2b-256 | 6c0735bd7b53349cfca1f58099cb5c6ed05fedff68588820c3ea62a4c307fbe1 |