mirror of
https://github.com/revanced/revanced-releases-api.git
synced 2025-06-12 20:57:37 +02:00
* refactor: import routers from old branch * refactor: import InternalCache removal * refactor: move routes into dedicated routers * fix: fixes entrypoint * refactor: add documentation and bump libs
This commit is contained in:
46
app/models/AnnouncementModels.py
Normal file
46
app/models/AnnouncementModels.py
Normal file
@ -0,0 +1,46 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Literal
|
||||
|
||||
AnnouncementType = Literal["info", "warning", "error"]
|
||||
|
||||
class AnnouncementModel(BaseModel):
|
||||
"""Implements the fields for the announcements.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
created_at: int
|
||||
author: str
|
||||
type: AnnouncementType
|
||||
title: str
|
||||
content: str
|
||||
|
||||
class AnnouncementCreateModel(BaseModel):
|
||||
"""Implements the fields for creating an announcement.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
type: AnnouncementType
|
||||
title: str
|
||||
content: str
|
||||
|
||||
class AnnouncementCreatedResponse(BaseModel):
|
||||
"""Implements the response fields for created announcements.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
created: bool
|
||||
|
||||
class AnnouncementDeleted(BaseModel):
|
||||
"""Implements the response fields for deleted announcements.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
deleted: bool
|
24
app/models/ClientModels.py
Normal file
24
app/models/ClientModels.py
Normal file
@ -0,0 +1,24 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
class ClientModel(BaseModel):
|
||||
"""Implements the fields for the clients.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
id: str
|
||||
secret: str
|
||||
admin: bool
|
||||
active: bool
|
||||
|
||||
class ClientAuthModel(BaseModel):
|
||||
"""Implements the fields for client authentication.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
id: str
|
||||
secret: str
|
||||
|
51
app/models/GeneralErrors.py
Normal file
51
app/models/GeneralErrors.py
Normal file
@ -0,0 +1,51 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
class InternalServerError(BaseModel):
|
||||
"""Implements the response fields for when an internal server error occurs.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
error: str = "Internal Server Error"
|
||||
message: str = "An internal server error occurred. Please try again later."
|
||||
|
||||
class AnnouncementNotFound(BaseModel):
|
||||
"""Implements the response fields for when an item is not found.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
error: str = "Not Found"
|
||||
message: str = "No announcement was found."
|
||||
|
||||
class ClientNotFound(BaseModel):
|
||||
"""Implements the response fields for when a client is not found.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
error: str = "Not Found"
|
||||
message: str = "No client matches the given ID"
|
||||
|
||||
class IdNotProvided(BaseModel):
|
||||
"""Implements the response fields for when the id is not provided.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
error: str = "Bad Request"
|
||||
message: str = "Missing client id"
|
||||
|
||||
class Unauthorized(BaseModel):
|
||||
"""Implements the response fields for when the client is unauthorized.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
error: str = "Unauthorized"
|
||||
message: str = "The client is unauthorized to access this resource"
|
77
app/models/ResponseFields.py
Normal file
77
app/models/ResponseFields.py
Normal file
@ -0,0 +1,77 @@
|
||||
from typing import Any
|
||||
from pydantic import BaseModel
|
||||
|
||||
class ToolsResponseFields(BaseModel):
|
||||
"""Implements the fields for the /tools endpoint.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
repository: str
|
||||
version: str
|
||||
timestamp: str
|
||||
name: str
|
||||
size: str | None = None
|
||||
browser_download_url: str
|
||||
content_type: str
|
||||
class CompatiblePackagesResponseFields(BaseModel):
|
||||
"""Implements the fields for compatible packages in the PatchesResponseFields class.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
name: str
|
||||
versions: list[ str ] | None
|
||||
|
||||
class PatchesOptionsResponseFields(BaseModel):
|
||||
key: str
|
||||
title: str
|
||||
description: str
|
||||
required: bool
|
||||
choices: list[ Any ] | None
|
||||
|
||||
class PatchesResponseFields(BaseModel):
|
||||
"""Implements the fields for the /patches endpoint.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
name: str
|
||||
description: str
|
||||
version: str
|
||||
excluded: bool
|
||||
deprecated: bool
|
||||
dependencies: list[ str ] | None
|
||||
options: list[ PatchesOptionsResponseFields ] | None
|
||||
compatiblePackages: list[ CompatiblePackagesResponseFields ]
|
||||
|
||||
class ContributorFields(BaseModel):
|
||||
"""Implements the fields for each contributor in the /contributors endpoint.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
login: str
|
||||
avatar_url: str
|
||||
html_url: str
|
||||
|
||||
class ContributorsResponseFields(BaseModel):
|
||||
"""Implements the fields for each repository in the /contributors endpoint
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
name: str
|
||||
contributors: list[ ContributorFields ]
|
||||
|
||||
class ChangelogsResponseFields(BaseModel):
|
||||
"""Implements the fields for the /changelogs endpoint.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
sha: str
|
||||
author: str
|
||||
message: str
|
||||
html_url: str
|
101
app/models/ResponseModels.py
Normal file
101
app/models/ResponseModels.py
Normal file
@ -0,0 +1,101 @@
|
||||
from pydantic import BaseModel
|
||||
import app.models.ResponseFields as ResponseFields
|
||||
|
||||
"""Implements pydantic models and model generator for the API's responses."""
|
||||
|
||||
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 ]
|
||||
|
||||
class ContributorsResponseModel(BaseModel):
|
||||
"""Implements the JSON response model for the /contributors endpoint.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
repositories: list[ ResponseFields.ContributorsResponseFields ]
|
||||
|
||||
class PingResponseModel(BaseModel):
|
||||
"""Implements the JSON response model for the /heartbeat endpoint.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
status: int
|
||||
detail: str
|
||||
|
||||
class ClientDeletedResponse(BaseModel):
|
||||
"""Implements the response fields for deleted clients.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
id: str
|
||||
deleted: bool
|
||||
|
||||
class ClientSecretUpdatedResponse(BaseModel):
|
||||
"""Implements the response fields for updated client secrets.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
id: str
|
||||
secret: str
|
||||
|
||||
class ClientAuthTokenResponse(BaseModel):
|
||||
"""Implements the response fields for client auth tokens.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
access_token: str
|
||||
refresh_token: str
|
||||
|
||||
class ClientTokenRefreshResponse(BaseModel):
|
||||
"""Implements the response fields for client token refresh.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
access_token: str
|
||||
|
||||
class ClientStatusResponse(BaseModel):
|
||||
"""Implements the response fields for client status.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
id: str
|
||||
active: bool
|
||||
|
||||
class ChangelogsResponseModel(BaseModel):
|
||||
"""Implements the JSON response model for the /changelogs endpoint.
|
||||
|
||||
Args:
|
||||
BaseModel (pydantic.BaseModel): BaseModel from pydantic
|
||||
"""
|
||||
|
||||
repository: str
|
||||
path: str
|
||||
commits: list[ ResponseFields.ChangelogsResponseFields ]
|
0
app/models/__init__.py
Normal file
0
app/models/__init__.py
Normal file
Reference in New Issue
Block a user