All Downloads are FREE. Search and download functionalities are using the official Maven repository.

snunit.tapir.SNUnitIdServerInterpreter.scala Maven / Gradle / Ivy

package snunit.tapir

import sttp.monad._

object SNUnitIdServerInterpreter extends SNUnitGenericServerInterpreter {
  type Id[T] = T
  private[tapir] type Wrapper[T] = Id[T]
  private[tapir] type HandlerWrapper = snunit.RequestHandler
  private[tapir] val dispatcher = new WrapperDispatcher {
    inline def dispatch(f: => Id[Unit]): Unit = f
  }
  inline private[tapir] def wrapSideEffect[T](f: => T): Wrapper[T] = f
  inline private[tapir] def createHandleWrapper(f: => snunit.RequestHandler): HandlerWrapper = f
  private[tapir] implicit val monadError: MonadError[Wrapper] = new MonadError[Id] {
    override def unit[T](t: T): Id[T] = t
    override def map[T, T2](fa: Id[T])(f: T => T2): Id[T2] = f(fa)
    override def flatMap[T, T2](fa: Id[T])(f: T => Id[T2]): Id[T2] = f(fa)
    override def error[T](t: Throwable): Id[T] = throw t
    override protected def handleWrappedError[T](rt: Id[T])(h: PartialFunction[Throwable, Id[T]]): Id[T] = rt
    override def ensure[T](f: Id[T], e: => Id[Unit]): Id[T] = try f
    finally e
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy