Oℕ
Size: a a a
Oℕ
Oℕ
EB
AT
Oℕ
Oℕ
Oℕ
Oℕ
SA
KS
SA
Oℕ
KS
KS
Oℕ
Oℕ
sealed trait AuthRequest[A]
case class SimpleAuth(user: String, password: String) extends AuthRequest[(String, String)]
case class BearerAuth(token: String) extends AuthRequest[String]
case class ExternalAuth(provider: String, id: UUID) extends AuthRequest[ExtAuth]
def getAuthReqData[A](req: AuthRequest[A]): IO[A] = req match {
case SimpleAuth(user, password) => (user, password).pure[IO]
case BearerAuth(token) => token.pure[IO]
case ExternalAuth(provider, id) => getExtAuthFor(provider).getAuthData(id)
}
Oℕ
Oℕ
Oℕ