mirror of
https://github.com/revanced/revanced-releases-api.git
synced 2025-04-30 14:34:28 +02:00
62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
import modules.ResponseFields as ResponseFields
|
|
from pydantic import BaseModel, create_model
|
|
|
|
"""Implements pydantic models and model generator for the API's responses."""
|
|
|
|
class ModelGenerator():
|
|
|
|
"""Generates a pydantic model from a dictionary."""
|
|
|
|
def __make_model(self, v, name):
|
|
# Parses a dictionary and creates a pydantic model from it.
|
|
#
|
|
# Args:
|
|
# v: key value
|
|
# name: key name
|
|
#
|
|
# Returns:
|
|
# pydantic.BaseModel: Generated pydantic model
|
|
|
|
if type(v) is dict:
|
|
return create_model(name, **{k: self.__make_model(v, k) for k, v in v.items()}), ...
|
|
return None, v
|
|
|
|
def generate(self, v: dict, name: str):
|
|
|
|
"""Returns a pydantic model from a dictionary.
|
|
|
|
Args:
|
|
v (Dict): JSON dictionary
|
|
name (str): Model name
|
|
|
|
Returns:
|
|
pydantic.BaseModel: Generated pydantic model
|
|
"""
|
|
return self.__make_model(v, name)[0]
|
|
|
|
class AppsResponseModel(BaseModel):
|
|
"""Implements the JSON response model for the /apps endpoint.
|
|
|
|
Args:
|
|
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
|
"""
|
|
|
|
apps: list[str]
|
|
|
|
class ToolsResponseModel(BaseModel):
|
|
"""Implements the JSON response model for the /tools endpoint.
|
|
|
|
Args:
|
|
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
|
"""
|
|
|
|
tools: list[ ResponseFields.ToolsResponseFields ]
|
|
|
|
class PatchesResponseModel(BaseModel):
|
|
"""Implements the JSON response model for the /patches endpoint.
|
|
|
|
Args:
|
|
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
|
"""
|
|
|
|
__root__: list[ ResponseFields.PatchesResponseFields ] |