diff --git a/src/main/scala/gitbucket/core/api/ApiTag.scala b/src/main/scala/gitbucket/core/api/ApiTag.scala new file mode 100644 index 0000000..46fd25a --- /dev/null +++ b/src/main/scala/gitbucket/core/api/ApiTag.scala @@ -0,0 +1,29 @@ +package gitbucket.core.api + +import gitbucket.core.util.RepositoryName + +case class ApiTagCommit( + sha: String, + url: ApiPath +) + +case class ApiTag( + name: String, + commit: ApiTagCommit, + zipball_url: ApiPath, + tarball_url: ApiPath +) + +object ApiTag { + def apply( + tagName: String, + repositoryName: RepositoryName, + commitId: String + ): ApiTag = + ApiTag( + name = tagName, + commit = ApiTagCommit(sha = commitId, url = ApiPath(s"/${repositoryName.fullName}/commits/${commitId}")), + zipball_url = ApiPath(s"/${repositoryName.fullName}/archive/${tagName}.zip"), + tarball_url = ApiPath(s"/${repositoryName.fullName}/archive/${tagName}.tar.gz") + ) +} diff --git a/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala b/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala index 7c9d478..f05623b 100644 --- a/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala +++ b/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala @@ -178,9 +178,14 @@ */ /* - * xiii. List tags - * https://developer.github.com/v3/repos/#list-tags + * xiii. List repository tags + * https://docs.github.com/en/rest/reference/repos#list-repository-tags */ + get("/api/v3/repos/:owner/:repository/tags")(referrersOnly { repository => + JsonFormat( + repository.tags.map(tagInfo => ApiTag(tagInfo.name, RepositoryName(repository), tagInfo.id)) + ) + }) /* * xiv. Delete a repository