mirror of
https://github.com/revanced/revanced-releases-api.git
synced 2025-04-30 06:24:27 +02:00
feat: restructure abd add tag support for get patch func
This commit is contained in:
parent
bad4fc09f1
commit
ca2f13060e
@ -14,39 +14,53 @@ class Releases:
|
|||||||
|
|
||||||
httpx_client = HTTPXClient.create()
|
httpx_client = HTTPXClient.create()
|
||||||
|
|
||||||
|
async def get_tag_name(self, tag: str) -> str:
|
||||||
|
"""get tag name from github release api.
|
||||||
|
|
||||||
|
arg:
|
||||||
|
tag (str): lateset(default) - to get latest release
|
||||||
|
prerelease - to get lateset prerelease
|
||||||
|
recent - to get recent release either prerelease or stable whichever is recent
|
||||||
|
version - supply a valid version tag
|
||||||
|
|
||||||
|
returns:
|
||||||
|
str: tag_name string.
|
||||||
|
"""
|
||||||
|
|
||||||
|
tag_name = None
|
||||||
|
if tag in ("recent", "latest", "prerelease"):
|
||||||
|
response = await self.httpx_client.get("https://api.github.com/repos/revanced/revanced-patches/releases").json()
|
||||||
|
if tag == "recent":
|
||||||
|
tag_name = response[0]['tag_name']
|
||||||
|
|
||||||
|
if tag in ("prerelease", "latest"):
|
||||||
|
for release in response:
|
||||||
|
if tag == "prerelease" and release['prerelease']:
|
||||||
|
tag_name = release['tag_name']
|
||||||
|
break
|
||||||
|
elif not release['prerelease']:
|
||||||
|
tag_name = release['tag_name']
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
tag_name = tag
|
||||||
|
|
||||||
|
return tag_name
|
||||||
|
|
||||||
async def __get_release(self, repository: str, tag: str = "latest") -> list:
|
async def __get_release(self, repository: str, tag: str = "latest") -> list:
|
||||||
"""Get assets from latest release in a given repository.
|
"""Get assets from latest release in a given repository.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
repository (str): Github's standard username/repository notation
|
repository (str): Github's standard username/repository notation
|
||||||
tag (str): lateset(default) - to get latest release
|
tag (str): lateset(default), prerelease, recent, tag_name
|
||||||
prerelease - to get lateset prerelease
|
see get_tag_name() for more details.
|
||||||
recent - to get recent release either prerelease or stable whichever is recent
|
|
||||||
version - supply a valid version tag
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: dictionary of filename and download url
|
dict: dictionary of filename and download url
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assets: list = []
|
assets: list = []
|
||||||
url = f"https://api.github.com/repos/{repository}/releases"
|
tag_name = await self.get_tag_name(tag)
|
||||||
response = await self.httpx_client.get(url).json()
|
response = await self.httpx_client.get(f"https://api.github.com/repos/{repository}/releases/tags/{tag_name}")
|
||||||
|
|
||||||
match tag:
|
|
||||||
case "recent":
|
|
||||||
response = await self.httpx_client.get(f"{url}/tags/{response[0]['tag_name']}")
|
|
||||||
|
|
||||||
case "prerelease":
|
|
||||||
for release in response:
|
|
||||||
if release['prerelease']:
|
|
||||||
response = await self.httpx_client.get(f"{url}/tags/{release['tag_name']}")
|
|
||||||
break
|
|
||||||
|
|
||||||
case "latest":
|
|
||||||
response = await self.httpx_client.get(f"{url}/latest")
|
|
||||||
|
|
||||||
case _:
|
|
||||||
response = await self.httpx_client.get(f"{url}/tags/{tag}")
|
|
||||||
|
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
release_assets: dict = response.json()['assets']
|
release_assets: dict = response.json()['assets']
|
||||||
@ -83,6 +97,8 @@ class Releases:
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
repositories (list): List of repositories in Github's standard username/repository notation
|
repositories (list): List of repositories in Github's standard username/repository notation
|
||||||
|
tag (str): lateset(default), prerelease, recent, tag_name
|
||||||
|
see get_tag_name() for more details.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: A dictionary containing assets from each repository
|
dict: A dictionary containing assets from each repository
|
||||||
@ -97,27 +113,34 @@ class Releases:
|
|||||||
|
|
||||||
return releases
|
return releases
|
||||||
|
|
||||||
async def __get_patches_json(self) -> dict:
|
async def __get_patches_json(self, tag: str = "latest") -> dict:
|
||||||
"""Get revanced-patches repository's README.md.
|
"""Get revanced-patches repository's README.md.
|
||||||
|
|
||||||
|
args:
|
||||||
|
tag (str): lateset(default), prerelease, recent, tag_name
|
||||||
|
see get_tag_name() for more details.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: JSON content
|
dict: JSON content
|
||||||
"""
|
"""
|
||||||
|
|
||||||
response = await self.httpx_client.get(f"https://api.github.com/repos/revanced/revanced-patches/contents/patches.json")
|
tag_name = await self.get_tag_name(tag)
|
||||||
content = orjson.loads(
|
content = await self.httpx_client.get(f"https://github.com/revanced/revanced-patches/releases/download/{tag_name}/patches.json").json()
|
||||||
b64decode(response.json()['content']).decode('utf-8'))
|
|
||||||
|
|
||||||
return content
|
return content
|
||||||
|
|
||||||
async def get_patches_json(self) -> dict:
|
async def get_patches_json(self, tag: str = "latest") -> dict:
|
||||||
"""Get patches.json from revanced-patches repository.
|
"""Get patches.json from revanced-patches repository.
|
||||||
|
|
||||||
|
args:
|
||||||
|
tag (str): lateset(default), prerelease, recent, tag_name
|
||||||
|
see get_tag_name() for more details.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: Patches available for a given app
|
dict: Patches available for a given app
|
||||||
"""
|
"""
|
||||||
|
|
||||||
patches: dict = await self.__get_patches_json()
|
patches: dict = await self.__get_patches_json(tag)
|
||||||
|
|
||||||
return patches
|
return patches
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user