Skip to content

Instantly share code, notes, and snippets.

View bijancn's full-sized avatar
🚢
Shipping

Bijan Chokoufe Nejad bijancn

🚢
Shipping
View GitHub Profile
def loadNumberOfItems(url: String): IO[Either[Exception, Int]] =
Url(url)
.toRight(InvalidUrl)
.map(request(_))
.traverse(_.map(_.getFieldOption("number").flatMap(_.as[Int]).toRight(InvalidJson)))
.map(_.flatten)
def loadNumberOfItems(url: String): Int = {
val json: Json = request(url)
json.getField("number").asInstanceOf[Int]
}
sealed trait Exception
case object InvalidUrl extends Exception
case object InvalidJson extends Exception
loadNumberOfItems("foo.bar") shouldBe a [Int]
// InvalidUrlException
loadNumberOfItems("http://google.com") shouldBe a [Int]
// InvalidPayloadException
loadNumberOfItems("http://actual.server.endpoint.com/number") shouldBe a [Int]
// ParsingException
loadNumberOfItems("http://actual.server.endpoint.com/number") shouldBe a [Int]
// ClassCastException
@bijancn
bijancn / Gzip.scala
Created November 13, 2018 13:28 — forked from owainlewis/Gzip.scala
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)
{"lastUpload":"2020-10-16T15:12:58.640Z","extensionVersion":"v3.4.3"}