diff --git a/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala b/src/main/scala/gitbucket/core/controller/api/ApiRepositoryControllerBase.scala index fa6740e..7c9d478 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 @@ }) } - /* + /** * 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 c5348b1..dcf9f11 100644 --- a/src/main/scala/gitbucket/core/service/RepositoryService.scala +++ b/src/main/scala/gitbucket/core/service/RepositoryService.scala @@ -381,6 +381,21 @@ } /** + * 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. */