gitea: expect full instance url
This commit is contained in:
parent
993b5e822a
commit
4f78c6e7f7
|
@ -5,7 +5,8 @@ from collections.abc import Generator
|
|||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from tempfile import NamedTemporaryFile
|
||||
from typing import Any, TYPE_CHECKING
|
||||
from typing import TYPE_CHECKING, Any
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from buildbot.config.builder import BuilderConfig
|
||||
from buildbot.plugins import util
|
||||
|
@ -69,7 +70,7 @@ class GiteaProject(GitProject):
|
|||
webhook_url: str,
|
||||
) -> None:
|
||||
hooks = paginated_github_request(
|
||||
f"https://{self.config.instance_url}/api/v1/repos/{owner}/{repo}/hooks?limit=100",
|
||||
f"{self.config.instance_url}/api/v1/repos/{owner}/{repo}/hooks?limit=100",
|
||||
self.config.token(),
|
||||
)
|
||||
config = dict(
|
||||
|
@ -96,14 +97,15 @@ class GiteaProject(GitProject):
|
|||
return
|
||||
|
||||
http_request(
|
||||
f"https://{self.config.instance_url}/api/v1/repos/{owner}/{repo}/hooks",
|
||||
f"{self.config.instance_url}/api/v1/repos/{owner}/{repo}/hooks",
|
||||
method="POST",
|
||||
headers=headers,
|
||||
data=data,
|
||||
)
|
||||
|
||||
def get_project_url(self) -> str:
|
||||
return f"https://git:%(secret:{self.config.token_secret_name})s@{self.config.instance_url}/{self.name}"
|
||||
url = urlparse(self.config.instance_url)
|
||||
return f"{url.scheme}://git:%(secret:{self.config.token_secret_name})s@{url.hostname}/{self.name}"
|
||||
|
||||
@property
|
||||
def pretty_type(self) -> str:
|
||||
|
@ -170,7 +172,7 @@ class GiteaBackend(GitBackend):
|
|||
|
||||
def create_reporter(self) -> ReporterBase:
|
||||
return GiteaStatusPush(
|
||||
"https://" + self.config.instance_url,
|
||||
self.config.instance_url,
|
||||
Interpolate(self.config.token()),
|
||||
context=Interpolate("buildbot/%(prop:status_name)s"),
|
||||
context_pr=Interpolate("buildbot/%(prop:status_name)s"),
|
||||
|
@ -187,7 +189,7 @@ class GiteaBackend(GitBackend):
|
|||
def create_auth(self) -> AuthBase:
|
||||
assert self.config.oauth_id is not None, "Gitea requires an OAuth ID to be set"
|
||||
return GiteaAuth(
|
||||
"https://" + self.config.instance_url,
|
||||
self.config.instance_url,
|
||||
self.config.oauth_id,
|
||||
self.config.oauth_secret(),
|
||||
)
|
||||
|
@ -271,7 +273,7 @@ def refresh_projects(config: GiteaConfig, repo_cache_file: Path) -> None:
|
|||
repos = []
|
||||
|
||||
for repo in paginated_github_request(
|
||||
f"https://{config.instance_url}/api/v1/user/repos?limit=100",
|
||||
f"{config.instance_url}/api/v1/user/repos?limit=100",
|
||||
config.token(),
|
||||
):
|
||||
if not repo["permissions"]["admin"]:
|
||||
|
@ -283,7 +285,7 @@ def refresh_projects(config: GiteaConfig, repo_cache_file: Path) -> None:
|
|||
try:
|
||||
# Gitea doesn't include topics in the default repo listing, unlike GitHub
|
||||
topics: list[str] = http_request(
|
||||
f"https://{config.instance_url}/api/v1/repos/{repo['owner']['login']}/{repo['name']}/topics",
|
||||
f"{config.instance_url}/api/v1/repos/{repo['owner']['login']}/{repo['name']}/topics",
|
||||
headers={"Authorization": f"token {config.token}"},
|
||||
).json()["topics"]
|
||||
repo["topics"] = topics
|
||||
|
|
Loading…
Reference in a new issue