in app/services/ZipReader.scala [23:44]
private def withStreams[A](func:(ZipInputStream)=>Try[A]) = {
Try {
val byteStream = new ByteArrayInputStream(bytes)
val zipStream = new ZipInputStream(byteStream)
(byteStream, zipStream)
} match {
case Success((byteStream, zipStream))=>
val finalResult = func(zipStream)
(Try { zipStream.close() }, Try { byteStream.close() }) match {
case (Failure(zipErr), _)=>
logger.error(s"Could not close zip stream: ${zipErr.getMessage}", zipErr)
finalResult
case (_, Failure(byteErr))=>
logger.error(s"Could not close byte stream: ${byteErr.getMessage}", byteErr)
finalResult
case (Success(_), Success(_))=>
finalResult
}
case Failure(err)=>
Failure(err)
}
}