def usingDatabaseStreamFrom()

in src/main/scala/ophan/geoip/db/refresher/MaxmindDatabaseEdition.scala [26:42]


  def usingDatabaseStreamFrom(archiveFile: File)(process: StreamOfKnownSize => Unit) = {
    implicit def archiveInputStreamReleasable[E <: ArchiveEntry]: Using.Releasable[ArchiveInputStream[E]] =
      (resource: ArchiveInputStream[E]) => resource.close()

    Using(new ArchiveStreamFactory().createArchiveInputStream(new BufferedInputStream(
      new CompressorStreamFactory().createCompressorInputStream(new BufferedInputStream(
        new FileInputStream(archiveFile)
      ))
    )).asInstanceOf[ArchiveInputStream[ArchiveEntry]]) { archiveInputStream =>
      for {
        (archiveEntry: ArchiveEntry, stream) <- new ArchiveInputStreamIterator(archiveInputStream)
        if Paths.get(archiveEntry.getName).endsWith(databaseFileName)
      } {
        process(StreamOfKnownSize(stream, archiveEntry.getSize))
      }
    }
  }