diff --git a/src/jcloud_deployment_server/models/gitea/__init__.py b/src/jcloud_deployment_server/models/gitea/__init__.py new file mode 100644 index 0000000..412773c --- /dev/null +++ b/src/jcloud_deployment_server/models/gitea/__init__.py @@ -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' +] \ No newline at end of file diff --git a/src/jcloud_deployment_server/models/gitea/common.py b/src/jcloud_deployment_server/models/gitea/common.py new file mode 100644 index 0000000..c1c6b1f --- /dev/null +++ b/src/jcloud_deployment_server/models/gitea/common.py @@ -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' diff --git a/src/jcloud_deployment_server/models/gitea.py b/src/jcloud_deployment_server/models/gitea/release.py similarity index 60% rename from src/jcloud_deployment_server/models/gitea.py rename to src/jcloud_deployment_server/models/gitea/release.py index 4896627..a2e870e 100644 --- a/src/jcloud_deployment_server/models/gitea.py +++ b/src/jcloud_deployment_server/models/gitea/release.py @@ -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