diff --git a/src/main/scala/app/RepositoryViewerController.scala b/src/main/scala/app/RepositoryViewerController.scala index 947eb7e..85c2f63 100644 --- a/src/main/scala/app/RepositoryViewerController.scala +++ b/src/main/scala/app/RepositoryViewerController.scala @@ -93,8 +93,17 @@ if(raw){ // Download - contentType = "application/octet-stream" - JGitUtil.getContent(git, objectId, false).get + 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 + } + //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/util/FileUtil.scala b/src/main/scala/util/FileUtil.scala index fad4067..a1a41ca 100644 --- a/src/main/scala/util/FileUtil.scala +++ b/src/main/scala/util/FileUtil.scala @@ -40,6 +40,10 @@ } } + def getFileName(path: String): String = defining(path.lastIndexOf('/')){ i => + if(i >= 0) path.substring(i + 1) else path + } + def getExtension(name: String): String = name.lastIndexOf('.') match { case i if(i >= 0) => name.substring(i + 1)