Kumi
1df648ca81
Some checks failed
/ chores (push) Failing after 12s
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.
54 lines
1.4 KiB
Python
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"))
|