Skip to content

Instantly share code, notes, and snippets.

View vdebergue's full-sized avatar

Vincent Debergue vdebergue

View GitHub Profile
sealed trait IOToolResponse[+A] {
def flatMap[B](f: A => IOToolResponse[B]): IOToolResponse[B]
def map[B](f: A => B): IOToolResponse[B] = this.flatMap(a => IOToolResponse.unit(f(a)))
}
object IOToolResponse {
def unit[A](a: A): IOToolResponse[A] = Authenticated(a)
}
case class Authenticated[A](data: A) extends IOToolResponse[A] {
def flatMap[B](f: A => IOToolResponse[B]) = f(data)
package utils
import javax.mail.internet.InternetAddress
import javax.mail.util.ByteArrayDataSource
import org.apache.commons.mail._
import scala.util.{Try, Failure, Success}
import scala.concurrent.ExecutionContext
import scala.concurrent.Future