Commit 2371348

benny-dou <60535774+benny-dou@users.noreply.github.com>
2026-05-15 09:44:02
chore(github): update GitHub API version to 2026-03-10
1 parent edfae8d
Changed files (2)
src
database
preview
src/database/github.py
@@ -41,10 +41,10 @@ async def list_assets(
     release_id = await get_release_id(tag_name, release_name, gh_user, gh_repo, gh_token)
     if not all([release_id, gh_user, gh_repo, gh_token]):
         return {}
-    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2022-11-28"}
+    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2026-03-10"}
     resp = await hx_req(f"https://api.github.com/repos/{gh_user}/{gh_repo}/releases/{release_id}/assets", headers=headers, proxy=PROXY.GITHUB, check_keys=["0.browser_download_url"])
     if isinstance(resp, list):
-        return {x["name"]: {"url": x["browser_download_url"], "id": x["id"], "updated_at": x["updated_at"], "name": x["name"]} for x in resp}  # type: ignore
+        return {x["name"]: {"url": x["browser_download_url"], "id": x["id"], "updated_at": x["updated_at"], "name": x["name"]} for x in resp}
     if resp.get("hx_error"):
         logger.error(resp["hx_error"])
     return {}
@@ -61,7 +61,7 @@ async def list_releases(
         gh_user = await get_username(gh_token)
     if not all([gh_user, gh_repo, gh_token]):
         return {}
-    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2022-11-28"}
+    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2026-03-10"}
     releases = []
     per_page = 100  # maximum is 100
     page = 1
@@ -187,7 +187,7 @@ async def gh_upload_asset(
     headers = {
         "Accept": "application/vnd.github+json",
         "Authorization": f"Bearer {gh_token}",
-        "X-GitHub-Api-Version": "2022-11-28",
+        "X-GitHub-Api-Version": "2026-03-10",
         "Content-Type": "application/octet-stream",
         "Content-Length": str(file_size),
     }
@@ -225,7 +225,7 @@ async def gh_del_asset(
         return False
     if not all([asset_name, gh_user, gh_repo, gh_token]):
         return False
-    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2022-11-28"}
+    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2026-03-10"}
     await hx_req(f"https://api.github.com/repos/{gh_user}/{gh_repo}/releases/assets/{asset_id}", "DELETE", headers=headers, proxy=PROXY.GITHUB, rformat="content")
     logger.success(f"Deleted asset {asset_name} from GitHub Release: {release_name}, Tag: {tag_name}")
     return True
@@ -236,7 +236,7 @@ async def get_username(gh_token: str):
     """Get github username from API token."""
     if not gh_token:
         return ""
-    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2022-11-28"}
+    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2026-03-10"}
     resp = await hx_req("https://api.github.com/user", headers=headers, proxy=PROXY.GITHUB, check_keys=["login"], check_kv={"type": "User"})
     token_user = resp.get("login", "")
     if DB.GH_USER and token_user != DB.GH_USER:
@@ -265,7 +265,7 @@ async def gh_create_release(
     release_id = await get_release_id(tag_name, release_name, gh_user, gh_repo, gh_token)
     if release_id:
         return release_id
-    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2022-11-28"}
+    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2026-03-10"}
     payload = {"tag_name": tag_name, "name": release_name or tag_name, "body": body, "draft": draft, "prerelease": prerelease, "make_latest": make_latest}
     resp = await hx_req(f"https://api.github.com/repos/{gh_user}/{gh_repo}/releases", "POST", headers=headers, proxy=PROXY.GITHUB, json_data=payload, check_kv={"tag_name": tag_name})
     if resp.get("hx_error"):
@@ -293,7 +293,7 @@ async def gh_del_release(
     if release_id == 0:
         logger.warning(f"ReleaseID not found on {gh_user}/{gh_repo}. Release: {release_name}, Tag: {tag_name}")
         return False
-    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2022-11-28"}
+    headers = {"Accept": "application/vnd.github+json", "Authorization": f"Bearer {gh_token}", "X-GitHub-Api-Version": "2026-03-10"}
     releases = await list_releases(gh_user, gh_repo, gh_token)
     release = next((x for x in releases.values() if x["id"] == release_id), {})
 
src/preview/github.py
@@ -14,7 +14,7 @@ from messages.utils import remove_img_tag
 from networking import download_file, download_media, hx_req
 from utils import nowdt
 
-HEADERS = {"Accept": "application/vnd.github+json", "X-GitHub-Api-Version": "2022-11-28"}
+HEADERS = {"Accept": "application/vnd.github+json", "X-GitHub-Api-Version": "2026-03-10"}
 if TOKEN.GITHUB:
     HEADERS["Authorization"] = f"Bearer {TOKEN.GITHUB}"
 
@@ -41,7 +41,7 @@ async def preview_github(client: Client, message: Message, url: str, gh_user: st
 async def preview_readme(gh_user: str, gh_repo: str) -> dict:
     """Preview github readme.
 
-    https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository
+    https://docs.github.com/en/rest/repos/repos?apiVersion=2026-03-10#get-a-repository
 
     Returns:
         {"texts": str, "media": list[dict]}
@@ -82,7 +82,7 @@ async def preview_readme(gh_user: str, gh_repo: str) -> dict:
 async def preview_issue(gh_user: str, gh_repo: str, query: str) -> dict:
     """Preview github issue.
 
-    https://docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#get-an-issue
+    https://docs.github.com/en/rest/issues/issues?apiVersion=2026-03-10#get-an-issue
 
     Args:
         query:
@@ -94,16 +94,16 @@ async def preview_issue(gh_user: str, gh_repo: str, query: str) -> dict:
     Returns:
         {"texts": str, "media": list[dict]}
     """
-    issue_number = query.split("#")[0].split("/")[1]
+    issue_number = query.split("#", maxsplit=1)[0].split("/")[1]
     api = f"https://api.github.com/repos/{gh_user}/{gh_repo}/issues/{issue_number}"
     resp = await hx_req(api, headers=HEADERS, proxy=PROXY.GITHUB, check_kv={"number": issue_number})
     if error := resp.get("hx_error"):
         return {"error": error}
-    msg = f"๐Ÿ“ฆ[{gh_user}/{gh_repo}/{query.split('#')[0]}](https://github.com/{gh_user}/{gh_repo}/{query})\n"
+    msg = f"๐Ÿ“ฆ[{gh_user}/{gh_repo}/{query.split('#', maxsplit=1)[0]}](https://github.com/{gh_user}/{gh_repo}/{query})\n"
     emoji = "๐ŸŸข" if resp["state"] == "open" else "๐ŸŸฃ"
     msg += f"{emoji}**{resp['title']}**\n"
     if "issuecomment" in query:
-        comment_id = query.split("#issuecomment-")[-1]
+        comment_id = query.rsplit("#issuecomment-", maxsplit=1)[-1]
         api = f"https://api.github.com/repos/{gh_user}/{gh_repo}/issues/comments/{comment_id}"
         resp = await hx_req(api, headers=HEADERS, proxy=PROXY.GITHUB, check_kv={"id": comment_id})
     issue_user = glom(resp, "user.login", default="user")