aboutsummaryrefslogtreecommitdiff
path: root/implementations/scalaz/src/test/scala/com/softwaremill/sttp/impl/scalaz/package.scala
blob: 27b47597cd9276341a2193376914c243f888fbd9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.softwaremill.sttp.impl

import com.softwaremill.sttp.testing.ConvertToFuture

import _root_.scalaz.concurrent.Task
import _root_.scalaz.{-\/, \/-}
import scala.concurrent.{Future, Promise}
import scala.util.{Failure, Success}

package object scalaz {

  val convertScalazTaskToFuture: ConvertToFuture[Task] = new ConvertToFuture[Task] {
    // from https://github.com/Verizon/delorean
    override def toFuture[T](value: Task[T]): Future[T] = {
      val p = Promise[T]()

      value.unsafePerformAsync {
        case \/-(a) => p.complete(Success(a)); ()
        case -\/(t) => p.complete(Failure(t)); ()
      }

      p.future
    }
  }
}