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))
}
}
}