-
Notifications
You must be signed in to change notification settings - Fork 0
/
webhook_generate.py
74 lines (56 loc) · 1.97 KB
/
webhook_generate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
# The creation of webhook
# trellobot.py MUST BE RUNNING
from config import *
import sys
import requests
import logging
logging.basicConfig()
logger = logging.getLogger(name="webhook_generate")
logger.setLevel(LOGGING_LEVEL)
logger.info("Module has started.")
def webhook_availability_check():
logger.info("Checking if the webhook was already created.")
found_webhooks = requests.get(
url=f"https://api.trello.com/1/tokens/{TRELLO_TOKEN}/webhooks",
params={"key": TRELLO_API_KEY, "token": TRELLO_TOKEN},
timeout=60,
).json()
if len(found_webhooks) == 0:
logger.info("No existing webhooks were found. Creating new one.")
return True
logger.warning("The webhook was already created!")
sys.exit(0)
def webhook_generate():
logger.info("Trying to create webhook")
board_id = requests.get(
url=f"https://api.trello.com/1/boards/{TRELLO_BOARD_ID}",
headers={"Accept": "application/json"},
params={"key": TRELLO_API_KEY, "token": TRELLO_TOKEN},
timeout=60,
).json()["id"]
webhook_json_data = {
"key": TRELLO_API_KEY,
"description": "Trellobot webhook",
"callbackURL": f"http://{WEBHOOK_URL}:{PORT}",
"idModel": board_id,
}
logger.debug(str(webhook_json_data))
webhook_request = requests.post(
url=f"https://api.trello.com/1/tokens/{TRELLO_TOKEN}/webhooks/",
json=webhook_json_data,
timeout=60,
)
return webhook_request
if webhook_availability_check():
webhook_request = webhook_generate()
if webhook_request.ok:
logger.info(f"Webhook {webhook_request.json()['id']} was successfully created!")
logger.debug(webhook_request.text)
else:
logger.critical(
"Creation of webhook was unsuccessful! Check if trellobot.py is running and your host is visible on web."
)
logger.error(webhook_request.json()["error"])
logger.debug(webhook_request.text)
sys.exit(1)