private def zipFolder()

in app/controllers/Export.scala [94:121]


  private def zipFolder(contentId: String, folder: Path): Path = {
    val zipPath = Files.createTempFile(s"export-zip-$contentId", ".zip")

    val fileOut = new FileOutputStream(zipPath.toFile)
    val zipOut = new ZipOutputStream(fileOut)

    Files.walkFileTree(folder, new SimpleFileVisitor[Path] {
      override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = {
        zipOut.putNextEntry(new ZipEntry(folder.relativize(file).toString))
        Files.copy(file, zipOut)
        zipOut.closeEntry()

        FileVisitResult.CONTINUE
      }

      override def preVisitDirectory(dir: Path, attrs: BasicFileAttributes): FileVisitResult = {
        zipOut.putNextEntry(new ZipEntry(s"${folder.relativize(dir)}/"))
        zipOut.closeEntry()

        FileVisitResult.CONTINUE
      }
    })

    zipOut.close()
    fileOut.close()

    zipPath
  }