Skip to content

Instantly share code, notes, and snippets.

@angelcervera
Forked from owainlewis/Gzip.scala
Created May 30, 2022 13:47
Show Gist options
  • Save angelcervera/0bfd7e6e8365340b8a59bf063b8e14d4 to your computer and use it in GitHub Desktop.
Save angelcervera/0bfd7e6e8365340b8a59bf063b8e14d4 to your computer and use it in GitHub Desktop.
Gzip Scala
import java.io.{ByteArrayOutputStream, ByteArrayInputStream}
import java.util.zip.{GZIPOutputStream, GZIPInputStream}
import scala.util.Try
object Gzip {
def compress(input: Array[Byte]): Array[Byte] = {
val bos = new ByteArrayOutputStream(input.length)
val gzip = new GZIPOutputStream(bos)
gzip.write(input)
gzip.close()
val compressed = bos.toByteArray
bos.close()
compressed
}
def decompress(compressed: Array[Byte]): Option[String] =
Try {
val inputStream = new GZIPInputStream(new ByteArrayInputStream(compressed))
scala.io.Source.fromInputStream(inputStream).mkString
}.toOption
}
class GzipSpec extends WordSpecLike with Matchers {
"The GZIP object" should {
"decompress a compressed string" in {
val input = Gzip.compress("Hello World".getBytes("UTF-8"))
Gzip.decompress(input) shouldBe Some("Hello World")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment