diff --git a/src/main/scala/gitbucket/core/controller/ApiController.scala b/src/main/scala/gitbucket/core/controller/ApiController.scala index 1cf042d..79fd56e 100644 --- a/src/main/scala/gitbucket/core/controller/ApiController.scala +++ b/src/main/scala/gitbucket/core/controller/ApiController.scala @@ -161,7 +161,18 @@ /* * https://developer.github.com/v3/repos/contents/#get-contents */ + get("/api/v3/repos/:owner/:repo/contents")(referrersOnly { repository => + getContents(repository, ".", params.getOrElse("ref", repository.repository.defaultBranch)) + }) + + /* + * https://developer.github.com/v3/repos/contents/#get-contents + */ get("/api/v3/repos/:owner/:repo/contents/*")(referrersOnly { repository => + getContents(repository, multiParams("splat").head, params.getOrElse("ref", repository.repository.defaultBranch)) + }) + + private def getContents(repository: RepositoryService.RepositoryInfo, path: String, refStr: String) = { def getFileInfo(git: Git, revision: String, pathStr: String): Option[FileInfo] = { val (dirName, fileName) = pathStr.lastIndexOf('/') match { case -1 => @@ -172,69 +183,61 @@ getFileList(git, revision, dirName).find(f => f.name.equals(fileName)) } - val path = multiParams("splat").head match { - case s if s.isEmpty => "." - case s => s - } - val refStr = params.getOrElse("ref", repository.repository.defaultBranch) - - using(Git.open(getRepositoryDir(params("owner"), params("repo")))) { - git => - val fileList = getFileList(git, refStr, path) - if (fileList.isEmpty) { // file or NotFound - getFileInfo(git, refStr, path) - .flatMap(f => { - val largeFile = params.get("large_file").exists(s => s.equals("true")) - val content = getContentFromId(git, f.id, largeFile) - request.getHeader("Accept") match { - case "application/vnd.github.v3.raw" => { - contentType = "application/vnd.github.v3.raw" - content - } - case "application/vnd.github.v3.html" if isRenderable(f.name) => { - contentType = "application/vnd.github.v3.html" - content.map( - c => - List( - "
", - play.twirl.api.HtmlFormat.escape(new String(c)).body, - "", - "
", + play.twirl.api.HtmlFormat.escape(new String(c)).body, + "", + "