Add models for Gitea webhooks

This commit is contained in:
2026-04-29 20:11:55 +02:00
parent 1b26f5c86f
commit 6ed50eb102
3 changed files with 95 additions and 31 deletions
@@ -0,0 +1,19 @@
# Copyright 2026 jCloud Services GbR
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from . import release
__all__ = [
'release'
]
@@ -0,0 +1,48 @@
# Copyright 2026 jCloud Services GbR
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from pydantic import BaseModel, HttpUrl
from typing import Optional, List, Literal
__all__ = [
'User',
'Repository',
]
class User(BaseModel):
id: int
login: str
username: Optional[str] = None
full_name: Optional[str] = None
email: Optional[str] = None
class Config:
extra = 'allow'
class Repository(BaseModel):
id: int
name: str
full_name: str
private: bool
html_url: str
clone_url: Optional[str] = None
ssh_url: Optional[str] = None
default_branch: Optional[str] = None
class Config:
extra = 'allow'
@@ -13,37 +13,15 @@
# limitations under the License. # limitations under the License.
from pydantic import BaseModel, HttpUrl from pydantic import BaseModel, HttpUrl
from typing import Optional, List from typing import Optional, List, Literal
from datetime import datetime from .common import User, Repository
__all__ = [ __all__ = [
'User',
'Repository',
'ReleaseAsset', 'ReleaseAsset',
'Release', 'Release',
'ReleaseEvent' 'ReleaseEvent'
] ]
class User(BaseModel):
id: int
login: str
username: Optional[str] = None
full_name: Optional[str] = None
email: Optional[str] = None
class Config:
extra = 'allow'
class Repository(BaseModel):
id: int
name: str
full_name: str
clone_url: Optional[HttpUrl] = None
default_branch: Optional[str] = None
class Config:
extra = 'allow'
class ReleaseAsset(BaseModel): class ReleaseAsset(BaseModel):
id: int id: int
name: str name: str
@@ -57,23 +35,42 @@ class ReleaseAsset(BaseModel):
class Release(BaseModel): class Release(BaseModel):
id: int id: int
tag_name: str tag_name: str
target_commitish: Optional[str] = None target_commitish: str
name: Optional[str] = None name: Optional[str] = None
body: Optional[str] = None body: Optional[str] = None
url: str
html_url: str
tarball_url: Optional[HttpUrl] = None
zipball_url: Optional[HttpUrl] = None
upload_url: Optional[HttpUrl] = None
draft: bool draft: bool
prerelease: bool prerelease: bool
created_at: Optional[datetime] = None
published_at: Optional[datetime] = None
author: Optional[User] = None created_at: Optional[str] = None
assets: Optional[List[ReleaseAsset]] = None published_at: Optional[str] = None
author: User
assets: List[ReleaseAsset]
class Config: class Config:
extra = 'allow' extra = 'allow'
class ReleaseEvent(BaseModel): class ReleaseWebhook(BaseModel):
action: str # 'published', 'created', ... action: Literal[
'published',
'created',
'edited',
'deleted',
'prereleased',
'released'
]
release: Release release: Release
repository: Repository repository: Repository
sender: User sender: User