1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/mediawiki_ynh.git synced 2024-09-03 19:46:05 +02:00

Allow the use of github token

This commit is contained in:
Félix Piédallu 2023-09-15 16:55:06 +02:00
parent ecd86a8a41
commit f46875a9d5

View file

@ -3,7 +3,7 @@
Download extensions for the current mediawiki version, and update the conf files. Download extensions for the current mediawiki version, and update the conf files.
""" """
from typing import List, Optional from typing import List, Optional, Any
import hashlib import hashlib
import urllib import urllib
import datetime import datetime
@ -14,6 +14,8 @@ import requests
GITHUB_API_URL = "https://api.github.com/repos" GITHUB_API_URL = "https://api.github.com/repos"
GITHUB_API_TOKEN = False
# Update this after updating mediawiki version. # Update this after updating mediawiki version.
ACCEPTABLE_BRANCHES = [ ACCEPTABLE_BRANCHES = [
"REL1_40", "REL1_40",
@ -21,6 +23,24 @@ ACCEPTABLE_BRANCHES = [
] ]
def github_get(path: str, *args, **kwargs) -> Any:
headers = kwargs.get("headers", {})
if GITHUB_API_TOKEN:
headers["Authorization"] = f"Bearer {GITHUB_API_TOKEN}"
kwargs["headers"] = headers
result = requests.get(
f"{GITHUB_API_URL}/{path}",
timeout=10,
*args,
**kwargs
)
if result.status_code == requests.codes["forbidden"]:
raise RuntimeError(result.json().get("message"), result.json().get("documentation_url"))
return result.json()
def sha256sum_of_url(url: str) -> str: def sha256sum_of_url(url: str) -> str:
"""Compute checksum without saving the file""" """Compute checksum without saving the file"""
checksum = hashlib.sha256() checksum = hashlib.sha256()
@ -57,18 +77,18 @@ def get_repo(url: str) -> str:
def get_branches(repo: str) -> List[str]: def get_branches(repo: str) -> List[str]:
branches = requests.get(f"{GITHUB_API_URL}/{repo}/branches", timeout=10).json() branches = github_get(f"{repo}/branches")
names = [branch["name"] for branch in branches] names = [branch["name"] for branch in branches]
return names return names
def get_last_commit_of(repo: str, branch: str) -> str: def get_last_commit_of(repo: str, branch: str) -> str:
commit = requests.get(f"{GITHUB_API_URL}/{repo}/commits/{branch}", timeout=10).json() commit = github_get(f"{repo}/commits/{branch}")
return commit["sha"] return commit["sha"]
def timestamp_of_commit(repo: str, sha: str) -> int: def timestamp_of_commit(repo: str, sha: str) -> int:
commit = requests.get(f"{GITHUB_API_URL}/{repo}/commits/{sha}", timeout=10).json() commit = github_get(f"{repo}/commits/{sha}")
try: try:
date = commit["commit"]["author"]["date"] date = commit["commit"]["author"]["date"]
except : except :