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.
from pydantic import BaseModel, HttpUrl
from typing import Optional, List
from datetime import datetime
from typing import Optional, List, Literal
from .common import User, Repository
__all__ = [
'User',
'Repository',
'ReleaseAsset',
'Release',
'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):
id: int
name: str
@@ -57,23 +35,42 @@ class ReleaseAsset(BaseModel):
class Release(BaseModel):
id: int
tag_name: str
target_commitish: Optional[str] = None
target_commitish: str
name: 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
prerelease: bool
created_at: Optional[datetime] = None
published_at: Optional[datetime] = None
author: Optional[User] = None
assets: Optional[List[ReleaseAsset]] = None
created_at: Optional[str] = None
published_at: Optional[str] = None
author: User
assets: List[ReleaseAsset]
class Config:
extra = 'allow'
class ReleaseEvent(BaseModel):
action: str # 'published', 'created', ...
class ReleaseWebhook(BaseModel):
action: Literal[
'published',
'created',
'edited',
'deleted',
'prereleased',
'released'
]
release: Release
repository: Repository
sender: User