pipelines/scripts/chores.py
Kumi 1df648ca81
Some checks failed
/ chores (push) Failing after 12s
Update authentication method for chore script
Refactor the authentication in the chore script by removing the 'token'
field from the payload and including it in the header as
'Authorization'. This change enhances security practices by aligning
with standard HTTP authorization protocols.
2024-02-18 13:23:54 +01:00

54 lines
1.4 KiB
Python

import pathlib
import json
import argparse
import os
import urllib.request
import logging
from datetime import datetime, timedelta
FORGEJO_URL = os.environ.get("FORGEJO_URL") or "https://git.private.coffee"
try:
TOKEN = os.environ["FORGEJO_TOKEN"]
assert TOKEN
except (KeyError, AssertionError):
logging.error("FORGEJO_TOKEN environment variable is required")
exit(1)
ASSIGNEES = os.environ.get("CHORES_ASSIGNEES").split()
REPO_OWNER = os.environ.get("CHORES_REPO_OWNER") or "PrivateCoffee"
REPO_NAME = os.environ.get("CHORES_REPO_NAME") or "chores"
EXPIRY_DAYS = int(os.environ.get("CHORES_EXPIRY_DAYS") or 2)
CHORES = (
os.environ.get("CHORES_TEXT")
or "Looks like you forgot to set the CHORES_TEXT environment variable."
)
due_date = (datetime.utcnow() + timedelta(days=EXPIRY_DAYS)).isoformat()
payload = {
"title": "Weekly Chores",
"body": CHORES,
"due_date": due_date,
}
if ASSIGNEES:
payload["assignees"] = ASSIGNEES
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "token " + TOKEN,
}
request = urllib.request.Request(
f"{FORGEJO_URL}/api/v1/repos/{REPO_OWNER}/{REPO_NAME}/issues",
data=json.dumps(payload).encode("utf-8"),
headers=headers,
method="POST",
)
with urllib.request.urlopen(request) as response:
print(response.read().decode("utf-8"))