Skip to content

Commit 6290d8d

Browse files
committed
get pages option from service
1 parent c2de3a8 commit 6290d8d

File tree

1 file changed

+49
-18
lines changed

1 file changed

+49
-18
lines changed

src/main/scala/gitbucket/plugin/pages/pages.scala

Lines changed: 49 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ package gitbucket.plugin.pages
22

33
import gitbucket.core.controller.ControllerBase
44
import gitbucket.core.service.{ AccountService, RepositoryService }
5+
import gitbucket.core.util.Implicits._
56
import gitbucket.core.util.SyntaxSugars._
67
import gitbucket.core.util.{ Directory, JGitUtil, ReferrerAuthenticator }
8+
import gitbucket.plugin.model.PageSourceType
9+
import gitbucket.plugin.service.PagesService
710
import org.eclipse.jgit.api.Git
811
import org.eclipse.jgit.lib.ObjectId
912
import org.eclipse.jgit.revwalk.RevCommit
@@ -14,37 +17,65 @@ import scala.language.implicitConversions
1417
class PagesController
1518
extends PagesControllerBase
1619
with AccountService
20+
with PagesService
1721
with RepositoryService
1822
with ReferrerAuthenticator
1923

2024
trait PagesControllerBase extends ControllerBase {
21-
self: AccountService with RepositoryService with ReferrerAuthenticator =>
25+
self: AccountService with RepositoryService with PagesService with ReferrerAuthenticator =>
2226

2327
val PAGES_BRANCHES = List("gb-pages", "gh-pages")
2428

2529
get("/:owner/:repository/pages/*")(referrersOnly { repository =>
2630
val path = params("splat")
2731
using(Git.open(Directory.getRepositoryDir(repository.owner, repository.name))) { git =>
28-
val objectId = resolveBranch(git, PAGES_BRANCHES)
29-
.map(JGitUtil.getRevCommitFromId(git, _))
30-
.flatMap { revCommit =>
31-
getPathIndexObjectId(git, path, revCommit)
32+
33+
def resolvePath(objectId: Option[(String, ObjectId)], path: String) = {
34+
objectId match {
35+
case Some((path0, objId)) =>
36+
// redirect [owner/repo/pages/path] -> [owner/repo/pages/path/]
37+
if (shouldRedirect(path, path0)) {
38+
redirect(s"/${repository.owner}/${repository.name}/pages/$path/")
39+
} else {
40+
JGitUtil.getObjectLoaderFromId(git, objId) { loader =>
41+
contentType = Option(servletContext.getMimeType(path0)).getOrElse("application/octet-stream")
42+
response.setContentLength(loader.getSize.toInt)
43+
loader.copyTo(response.getOutputStream)
44+
}
45+
()
46+
}
47+
case None =>
48+
NotFound()
3249
}
50+
}
3351

34-
objectId match {
35-
case Some((path0, objId)) =>
36-
// redirect [owner/repo/pages/path] -> [owner/repo/pages/path/]
37-
if (shouldRedirect(path, path0)) {
38-
redirect(s"/${repository.owner}/${repository.name}/pages/$path/")
39-
} else {
40-
JGitUtil.getObjectLoaderFromId(git, objId) { loader =>
41-
contentType = Option(servletContext.getMimeType(path0)).getOrElse("application/octet-stream")
42-
response.setContentLength(loader.getSize.toInt)
43-
loader.copyTo(response.getOutputStream)
52+
val source = getPageOptions(repository.owner, repository.name) match {
53+
case Some(p) => p.source
54+
case None => PageSourceType.GH_PAGES
55+
}
56+
source match {
57+
case PageSourceType.GH_PAGES =>
58+
val objectId = resolveBranch(git, PAGES_BRANCHES)
59+
.map(JGitUtil.getRevCommitFromId(git, _))
60+
.flatMap { revCommit =>
61+
getPathIndexObjectId(git, path, revCommit)
62+
}
63+
resolvePath(objectId, path)
64+
case PageSourceType.MASTER =>
65+
val objectId = Option(git.getRepository.resolve("master"))
66+
.map(JGitUtil.getRevCommitFromId(git, _))
67+
.flatMap { revCommit =>
68+
getPathIndexObjectId(git, path, revCommit)
69+
}
70+
resolvePath(objectId, path)
71+
case PageSourceType.MASTER_DOCS =>
72+
val objectId = Option(git.getRepository.resolve("master"))
73+
.map(JGitUtil.getRevCommitFromId(git, _))
74+
.flatMap { revCommit =>
75+
getPathIndexObjectId(git, s"docs/$path", revCommit)
4476
}
45-
()
46-
}
47-
case None =>
77+
resolvePath(objectId, path)
78+
case PageSourceType.NONE =>
4879
NotFound()
4980
}
5081
}

0 commit comments

Comments
 (0)