From b81ce41d512f26318fc35312f0e664d48b010fcd Mon Sep 17 00:00:00 2001 From: onukura Date: Sat, 29 Aug 2020 15:32:00 +0900 Subject: [PATCH] Add list-public-repositories API (#2529) --- .../api/ApiRepositoryControllerBase.scala | 10 +++++++--- .../core/service/RepositoryService.scala | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala b/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala index fa6740e95..7c9d4787c 100644 --- a/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala +++ b/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala @@ -54,11 +54,15 @@ trait ApiRepositoryControllerBase extends ControllerBase { }) } - /* + /** * iv. List all public repositories - * https://developer.github.com/v3/repos/#list-all-public-repositories - * Not implemented + * https://developer.github.com/v3/repos/#list-public-repositories */ + get("/api/v3/repositories") { + JsonFormat(getPublicRepositories().map { r => + ApiRepository(r, getAccountByUserName(r.owner).get) + }) + } /* * v. Create diff --git a/src/main/scala/gitbucket/core/service/RepositoryService.scala b/src/main/scala/gitbucket/core/service/RepositoryService.scala index c5348b162..dcf9f11ea 100644 --- a/src/main/scala/gitbucket/core/service/RepositoryService.scala +++ b/src/main/scala/gitbucket/core/service/RepositoryService.scala @@ -380,6 +380,21 @@ trait RepositoryService { .list } + /** + * Returns the all public repositories. + * + * @return the repository information list + */ + def getPublicRepositories(withoutPhysicalInfo: Boolean = false)(implicit s: Session): List[RepositoryInfo] = { + Repositories + .filter { t1 => + t1.isPrivate === false.bind + } + .sortBy(_.lastActivityDate desc) + .list + .map(createRepositoryInfo(_, withoutPhysicalInfo)) + } + /** * Returns the list of repositories which are owned by the specified user. * This list includes group repositories if the specified user is a member of the group.