Skip to content

Commit e9a3db6

Browse files
committed
Move some methods to GistUtils
1 parent 50fbb32 commit e9a3db6

File tree

2 files changed

+48
-35
lines changed

2 files changed

+48
-35
lines changed

src/main/scala/gitbucket/gist/controller/GistController.scala

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ import gitbucket.core.view.helpers._
1616
import gitbucket.gist.model.{GistUser, Gist}
1717
import gitbucket.gist.service.GistService
1818
import gitbucket.gist.util._
19+
import gitbucket.gist.util.GistUtils._
1920
import gitbucket.gist.util.Configurations._
2021
import gitbucket.gist.html
2122

2223
import org.apache.commons.io.FileUtils
2324
import org.eclipse.jgit.api.Git
2425
import org.eclipse.jgit.lib._
25-
import org.eclipse.jgit.dircache.DirCache
2626

2727
class GistController extends GistControllerBase with GistService with AccountService
2828
with GistEditorAuthenticator with UsersAuthenticator
@@ -205,7 +205,7 @@ trait GistControllerBase extends ControllerBase {
205205
}
206206
}
207207
val gist = getGist(userName, repoName).get
208-
html.revisions("revision", gist, repositoryUrl(gist), isEditable(userName), commits)
208+
html.revisions("revision", gist, repositoryUrl(gist, baseUrl), isEditable(userName), commits)
209209
}
210210
case Left(_) => NotFound
211211
}
@@ -317,22 +317,14 @@ trait GistControllerBase extends ControllerBase {
317317
val files: Seq[(String, String)] = JGitUtil.getFileList(git, revision, ".").map { file =>
318318
file.name -> StringUtil.convertFromByteArray(JGitUtil.getContentFromId(git, file.id, true).get)
319319
}
320-
html.detail("code", gist, repositoryUrl(gist), revision, files, isEditable(userName))
320+
html.detail("code", gist, repositoryUrl(gist, baseUrl), revision, files, isEditable(userName))
321321
} else Unauthorized
322322
}
323323
} else NotFound
324324
}
325325
}
326326
}
327327

328-
private def repositoryUrl(gist: Gist) = s"${baseUrl}/git/gist/${gist.userName}/${gist.repositoryName}.git"
329-
330-
private def isEditable(userName: String): Boolean = {
331-
context.loginAccount.map { loginAccount =>
332-
loginAccount.isAdmin || loginAccount.userName == userName
333-
}.getOrElse(false)
334-
}
335-
336328
private def getFileParameters(flatten: Boolean): Seq[(String, String)] = {
337329
val count = params("count").toInt
338330
if(flatten){
@@ -351,28 +343,4 @@ trait GistControllerBase extends ControllerBase {
351343
}
352344
}
353345

354-
private def commitFiles(git: Git, loginAccount: Account, message: String, files: Seq[(String, String)]): ObjectId = {
355-
val builder = DirCache.newInCore.builder()
356-
val inserter = git.getRepository.newObjectInserter()
357-
val headId = git.getRepository.resolve(Constants.HEAD + "^{commit}")
358-
359-
files.foreach { case (fileName, content) =>
360-
builder.add(JGitUtil.createDirCacheEntry(fileName, FileMode.REGULAR_FILE,
361-
inserter.insert(Constants.OBJ_BLOB, content.getBytes("UTF-8"))))
362-
}
363-
builder.finish()
364-
365-
val commitId = JGitUtil.createNewCommit(git, inserter, headId, builder.getDirCache.writeTree(inserter),
366-
Constants.HEAD, loginAccount.fullName, loginAccount.mailAddress, message)
367-
368-
inserter.flush()
369-
inserter.release()
370-
371-
commitId
372-
}
373-
374-
private def isGistFile(fileName: String): Boolean = fileName.matches("gistfile[0-9]+\\.txt")
375-
376-
private def getTitle(fileName: String, repoName: String): String = if(isGistFile(fileName)) repoName else fileName
377-
378346
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package gitbucket.gist.util
2+
3+
import gitbucket.core.controller.Context
4+
import gitbucket.core.model.Account
5+
import gitbucket.core.util.JGitUtil
6+
import gitbucket.gist.model.Gist
7+
import org.eclipse.jgit.api.Git
8+
import org.eclipse.jgit.dircache.DirCache
9+
import org.eclipse.jgit.lib.{FileMode, Constants, ObjectId}
10+
11+
object GistUtils {
12+
13+
def isEditable(userName: String)(implicit context: Context): Boolean = {
14+
context.loginAccount.map { loginAccount =>
15+
loginAccount.isAdmin || loginAccount.userName == userName
16+
}.getOrElse(false)
17+
}
18+
19+
def commitFiles(git: Git, loginAccount: Account, message: String, files: Seq[(String, String)]): ObjectId = {
20+
val builder = DirCache.newInCore.builder()
21+
val inserter = git.getRepository.newObjectInserter()
22+
val headId = git.getRepository.resolve(Constants.HEAD + "^{commit}")
23+
24+
files.foreach { case (fileName, content) =>
25+
builder.add(JGitUtil.createDirCacheEntry(fileName, FileMode.REGULAR_FILE,
26+
inserter.insert(Constants.OBJ_BLOB, content.getBytes("UTF-8"))))
27+
}
28+
builder.finish()
29+
30+
val commitId = JGitUtil.createNewCommit(git, inserter, headId, builder.getDirCache.writeTree(inserter),
31+
Constants.HEAD, loginAccount.fullName, loginAccount.mailAddress, message)
32+
33+
inserter.flush()
34+
inserter.release()
35+
36+
commitId
37+
}
38+
39+
def isGistFile(fileName: String): Boolean = fileName.matches("gistfile[0-9]+\\.txt")
40+
41+
def getTitle(fileName: String, repoName: String): String = if(isGistFile(fileName)) repoName else fileName
42+
43+
def repositoryUrl(gist: Gist, baseUrl: String) = s"${baseUrl}/git/gist/${gist.userName}/${gist.repositoryName}.git"
44+
45+
}

0 commit comments

Comments
 (0)