mirror of
https://github.com/revanced/revanced-api.git
synced 2025-05-02 15:44:33 +02:00
feat: info endpoint (#71)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
b5ac337fb4
commit
9bbd056c1b
@ -4,7 +4,8 @@ from sanic import Blueprint
|
|||||||
from api.github import github
|
from api.github import github
|
||||||
from api.ping import ping
|
from api.ping import ping
|
||||||
from api.socials import socials
|
from api.socials import socials
|
||||||
|
from api.info import info
|
||||||
from api.compat import github as old
|
from api.compat import github as old
|
||||||
from api.donations import donations
|
from api.donations import donations
|
||||||
|
|
||||||
api = Blueprint.group(ping, github, socials, donations, old, url_prefix="/")
|
api = Blueprint.group(ping, github, info, socials, donations, old, url_prefix="/")
|
||||||
|
31
api/info.py
Normal file
31
api/info.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
"""
|
||||||
|
This module provides a blueprint for the info endpoint.
|
||||||
|
|
||||||
|
Routes:
|
||||||
|
- GET /info: Get info about the owner of the API.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from sanic import Blueprint, Request
|
||||||
|
from sanic.response import JSONResponse, json
|
||||||
|
from sanic_ext import openapi
|
||||||
|
|
||||||
|
from api.models.info import InfoResponseModel
|
||||||
|
from config import api_version, default_info
|
||||||
|
|
||||||
|
info: Blueprint = Blueprint("info", version=api_version)
|
||||||
|
|
||||||
|
|
||||||
|
@info.get("/info")
|
||||||
|
@openapi.definition(
|
||||||
|
summary="Information about the API",
|
||||||
|
response=[InfoResponseModel],
|
||||||
|
)
|
||||||
|
async def root(request: Request) -> JSONResponse:
|
||||||
|
"""
|
||||||
|
Returns a JSONResponse with a dictionary containing info about the owner of the API.
|
||||||
|
|
||||||
|
**Returns:**
|
||||||
|
- JSONResponse: A Sanic JSONResponse instance containing a dictionary with the info about the owner of the API.
|
||||||
|
"""
|
||||||
|
data: dict[str, dict] = {"info": default_info}
|
||||||
|
return json(data, status=200)
|
23
api/models/info.py
Normal file
23
api/models/info.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
from api.models.donations import DonationFields
|
||||||
|
from api.models.socials import SocialFields
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class InfoFields(BaseModel):
|
||||||
|
"""
|
||||||
|
Implements the fields for a API owner info.
|
||||||
|
"""
|
||||||
|
|
||||||
|
name: str
|
||||||
|
about: str
|
||||||
|
contact: dict[str, str]
|
||||||
|
socials: SocialFields
|
||||||
|
donations: DonationFields
|
||||||
|
|
||||||
|
|
||||||
|
class InfoResponseModel(BaseModel):
|
||||||
|
"""
|
||||||
|
A Pydantic BaseModel that represents a dictionary of info.
|
||||||
|
"""
|
||||||
|
|
||||||
|
info: InfoFields
|
@ -1,7 +1,7 @@
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
class SocialField(BaseModel):
|
class SocialFields(BaseModel):
|
||||||
"""
|
"""
|
||||||
Implements the fields for a social network link.
|
Implements the fields for a social network link.
|
||||||
"""
|
"""
|
||||||
@ -15,7 +15,7 @@ class SocialsResponseModel(BaseModel):
|
|||||||
A Pydantic BaseModel that represents a dictionary of social links.
|
A Pydantic BaseModel that represents a dictionary of social links.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
socials: list[SocialField]
|
socials: list[SocialFields]
|
||||||
"""
|
"""
|
||||||
A dictionary where the keys are the names of the social networks, and
|
A dictionary where the keys are the names of the social networks, and
|
||||||
the values are the links to the profiles or pages.
|
the values are the links to the profiles or pages.
|
||||||
|
131
config.py
131
config.py
@ -1,13 +1,68 @@
|
|||||||
|
# API Configuration
|
||||||
|
|
||||||
|
backend: str = "github"
|
||||||
|
redis: dict[str, str | int] = {"host": "localhost", "port": 6379}
|
||||||
|
|
||||||
|
# GitHub Backend Configuration
|
||||||
|
|
||||||
|
owner: str = "ReVanced"
|
||||||
|
default_repository: str = ".github"
|
||||||
|
|
||||||
|
# API Versioning
|
||||||
|
|
||||||
|
api_version: str = "v2"
|
||||||
|
openapi_version: str = "2.0.0"
|
||||||
|
openapi_title: str = "ReVanced API"
|
||||||
|
openapi_description: str = """
|
||||||
|
## The official JSON API for ReVanced Releases 🚀
|
||||||
|
|
||||||
|
### Links
|
||||||
|
|
||||||
|
- [Changelogs](https://github.com/revanced/)
|
||||||
|
- [Official links to ReVanced](https://revanced.app)
|
||||||
|
|
||||||
|
### Important Information
|
||||||
|
|
||||||
|
* Rate Limiting - 60 requests per minute
|
||||||
|
* Cache - 5 minutes
|
||||||
|
|
||||||
|
### Additional Notes
|
||||||
|
|
||||||
|
1. Breaking changes are to be expected
|
||||||
|
2. Client side caching is advised to avoid unnecessary requests
|
||||||
|
3. Abuse of the API will result in IP blocks
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Testing Configuration
|
||||||
|
|
||||||
|
github_testing_repository: str = "revanced-patches"
|
||||||
|
github_testing_tag: str = "v2.173.0"
|
||||||
|
apkdl_testing_package: str = "com.google.android.youtube"
|
||||||
|
|
||||||
|
# Old API Configuration
|
||||||
|
|
||||||
|
compat_api_version: str = "v1"
|
||||||
|
compat_repositories: list = [
|
||||||
|
"revanced-patcher",
|
||||||
|
"revanced-patches",
|
||||||
|
"revanced-integrations",
|
||||||
|
"revanced-manager",
|
||||||
|
"revanced-cli",
|
||||||
|
"revanced-website",
|
||||||
|
"revanced-api",
|
||||||
|
"revanced-releases-api",
|
||||||
|
]
|
||||||
|
|
||||||
# Social Links
|
# Social Links
|
||||||
|
|
||||||
social_links: list[dict[str, str]] = [
|
social_links: list[dict[str, str]] = [
|
||||||
{"name": "website", "url": "https://revanced.app"},
|
{"name": "Website", "url": "https://revanced.app"},
|
||||||
{"name": "github", "url": "https://github.com/revanced"},
|
{"name": "GitHub", "url": "https://github.com/revanced"},
|
||||||
{"name": "twitter", "url": "https://twitter.com/revancedapp"},
|
{"name": "Twitter", "url": "https://twitter.com/revancedapp"},
|
||||||
{"name": "discord", "url": "https://revanced.app/discord"},
|
{"name": "Discord", "url": "https://revanced.app/discord"},
|
||||||
{"name": "reddit", "url": "https://www.reddit.com/r/revancedapp"},
|
{"name": "Reddit", "url": "https://www.reddit.com/r/revancedapp"},
|
||||||
{"name": "telegram", "url": "https://t.me/app_revanced"},
|
{"name": "Telegram", "url": "https://t.me/app_revanced"},
|
||||||
{"name": "youtube", "url": "https://www.youtube.com/@ReVanced"},
|
{"name": "YouTube", "url": "https://www.youtube.com/@ReVanced"},
|
||||||
]
|
]
|
||||||
|
|
||||||
# Donation info
|
# Donation info
|
||||||
@ -58,56 +113,12 @@ links: list[dict[str, str | bool]] = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
# API Configuration
|
default_info: dict[str, str | list[str | bool] | bool] = {
|
||||||
|
"name": owner,
|
||||||
backend: str = "github"
|
"about": "ReVanced was born out of Vanced's discontinuation and it is our goal to continue the legacy of what Vanced left behind. Thanks to ReVanced Patcher, it's possible to create long-lasting patches for nearly any Android app. ReVanced's patching system is designed to allow patches to work on new versions of the apps automatically with bare minimum maintenance.",
|
||||||
redis: dict[str, str | int] = {"host": "localhost", "port": 6379}
|
"contact": [
|
||||||
|
{"method": "mail", "value": "contact@revanced.app"},
|
||||||
# GitHub Backend Configuration
|
],
|
||||||
|
"socials": social_links,
|
||||||
owner: str = "revanced"
|
"donations": {"wallets": wallets, "links": links},
|
||||||
default_repository: str = ".github"
|
}
|
||||||
|
|
||||||
# API Versioning
|
|
||||||
|
|
||||||
api_version: str = "v2"
|
|
||||||
openapi_version: str = "2.0.0"
|
|
||||||
openapi_title: str = "ReVanced API"
|
|
||||||
openapi_description: str = """
|
|
||||||
## The official JSON API for ReVanced Releases 🚀
|
|
||||||
|
|
||||||
### Links
|
|
||||||
|
|
||||||
- [Changelogs](https://github.com/revanced/)
|
|
||||||
- [Official links to ReVanced](https://revanced.app)
|
|
||||||
|
|
||||||
### Important Information
|
|
||||||
|
|
||||||
* Rate Limiting - 60 requests per minute
|
|
||||||
* Cache - 5 minutes
|
|
||||||
|
|
||||||
### Additional Notes
|
|
||||||
|
|
||||||
1. Breaking changes are to be expected
|
|
||||||
2. Client side caching is advised to avoid unnecessary requests
|
|
||||||
3. Abuse of the API will result in IP blocks
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Testing Configuration
|
|
||||||
|
|
||||||
github_testing_repository: str = "revanced-patches"
|
|
||||||
github_testing_tag: str = "v2.173.0"
|
|
||||||
apkdl_testing_package: str = "com.google.android.youtube"
|
|
||||||
|
|
||||||
# Old API Configuration
|
|
||||||
|
|
||||||
compat_api_version: str = "v1"
|
|
||||||
compat_repositories: list = [
|
|
||||||
"revanced-patcher",
|
|
||||||
"revanced-patches",
|
|
||||||
"revanced-integrations",
|
|
||||||
"revanced-manager",
|
|
||||||
"revanced-cli",
|
|
||||||
"revanced-website",
|
|
||||||
"revanced-releases-api",
|
|
||||||
]
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user