diff --git a/src/main/scala/app/RepositoryViewerController.scala b/src/main/scala/app/RepositoryViewerController.scala index f8623c0..a68e103 100644 --- a/src/main/scala/app/RepositoryViewerController.scala +++ b/src/main/scala/app/RepositoryViewerController.scala @@ -94,17 +94,10 @@ if(raw){ // Download - val mimeType = FileUtil.getMimeType(path) - val bytes = JGitUtil.getContent(git, objectId, false).get - - contentType = if(mimeType == "application/octet-stream" && FileUtil.isText(bytes)){ - "text/plain" - } else { - mimeType + defining(JGitUtil.getContent(git, objectId, false).get){ bytes => + contentType = FileUtil.getContentType(path, bytes) + bytes } - //response.setHeader("Content-Disposition", s"inline; filename=${FileUtil.getFileName(path)}") - bytes - } else { // Viewer val large = FileUtil.isLarge(git.getRepository.getObjectDatabase.open(objectId).getSize) diff --git a/src/main/scala/app/WikiController.scala b/src/main/scala/app/WikiController.scala index 3bffdb3..71ed5ea 100644 --- a/src/main/scala/app/WikiController.scala +++ b/src/main/scala/app/WikiController.scala @@ -164,12 +164,7 @@ val path = multiParams("splat").head getFileContent(repository.owner, repository.name, path).map { bytes => - val mimeType = FileUtil.getMimeType(path) - contentType = if(mimeType == "application/octet-stream" && FileUtil.isText(bytes)){ - "text/plain" - } else { - mimeType - } + contentType = FileUtil.getContentType(path, bytes) bytes } getOrElse NotFound }) diff --git a/src/main/scala/util/FileUtil.scala b/src/main/scala/util/FileUtil.scala index a1a41ca..0f6103b 100644 --- a/src/main/scala/util/FileUtil.scala +++ b/src/main/scala/util/FileUtil.scala @@ -16,6 +16,16 @@ } } + def getContentType(name: String, bytes: Array[Byte]): String = { + defining(getMimeType(name)){ mimeType => + if(mimeType == "application/octet-stream" && isText(bytes)){ + "text/plain" + } else { + mimeType + } + } + } + def isImage(name: String): Boolean = getMimeType(name).startsWith("image/") def isLarge(size: Long): Boolean = (size > 1024 * 1000)