diff --git a/src/main/scala/util/FileTypeUtil.scala b/src/main/scala/util/FileTypeUtil.scala index ca1b5e9..a3e185f 100644 --- a/src/main/scala/util/FileTypeUtil.scala +++ b/src/main/scala/util/FileTypeUtil.scala @@ -1,14 +1,22 @@ package util import org.apache.commons.io.FilenameUtils +import java.net.URLConnection object FileTypeUtil { - def isImage(name: String): Boolean = FilenameUtils.getExtension(name).toLowerCase match { - case "jpg"|"jpeg"|"bmp"|"gif"|"png" => true - case _ => false + def getMimeType(name: String): String = { + val fileNameMap = URLConnection.getFileNameMap() + val mimeType = fileNameMap.getContentTypeFor(name) + if(mimeType == null){ + "application/octeat-stream" + } else { + mimeType + } } + def isImage(name: String): Boolean = getMimeType(name).startsWith("image/") + def isLarge(size: Long): Boolean = (size > 1024 * 1000) } \ No newline at end of file diff --git a/src/main/scala/util/JGitUtil.scala b/src/main/scala/util/JGitUtil.scala index e423949..2e403c0 100644 --- a/src/main/scala/util/JGitUtil.scala +++ b/src/main/scala/util/JGitUtil.scala @@ -402,9 +402,13 @@ import scala.collection.JavaConverters._ git.diff.setNewTree(newTreeIter).setOldTree(oldTreeIter).call.asScala.map { diff => - DiffInfo(diff.getChangeType, diff.getOldPath, diff.getNewPath, + if(FileTypeUtil.isImage(diff.getOldPath) || FileTypeUtil.isImage(diff.getNewPath)){ + DiffInfo(diff.getChangeType, diff.getOldPath, diff.getNewPath, None, None) + } else { + DiffInfo(diff.getChangeType, diff.getOldPath, diff.getNewPath, JGitUtil.getContent(git, diff.getOldId.toObjectId, false).map(new String(_, "UTF-8")), JGitUtil.getContent(git, diff.getNewId.toObjectId, false).map(new String(_, "UTF-8"))) + } }.toList } else { // initial commit diff --git a/src/main/twirl/diff.scala.html b/src/main/twirl/diff.scala.html index 64d01d5..c64ee3b 100644 --- a/src/main/twirl/diff.scala.html +++ b/src/main/twirl/diff.scala.html @@ -24,11 +24,12 @@ @if(diff.newContent != None || diff.oldContent != None){ -
- - +
+ + } else { - Too big file not shown + Not supported + @*Too big file not shown*@ }