From 43efb4e6ba2791e7ae34da7162f1cfcf2030ac21 Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Tue, 24 Mar 2020 23:39:57 +0100 Subject: [PATCH] Use doobie support from emil project --- .../restserver/routes/MailSendRoutes.scala | 5 ++- .../routes/MailSettingsRoutes.scala | 14 +++---- .../restserver/routes/SentMailRoutes.scala | 4 +- .../main/scala/docspell/store/EmilUtil.scala | 38 ------------------- .../docspell/store/impl/DoobieMeta.scala | 15 +------- 5 files changed, 14 insertions(+), 62 deletions(-) delete mode 100644 modules/store/src/main/scala/docspell/store/EmilUtil.scala diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/MailSendRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/MailSendRoutes.scala index 3d7a08e3..50987e76 100644 --- a/modules/restserver/src/main/scala/docspell/restserver/routes/MailSendRoutes.scala +++ b/modules/restserver/src/main/scala/docspell/restserver/routes/MailSendRoutes.scala @@ -6,6 +6,8 @@ import org.http4s._ import org.http4s.dsl.Http4sDsl import org.http4s.circe.CirceEntityEncoder._ import org.http4s.circe.CirceEntityDecoder._ +import emil.MailAddress +import emil.javamail.syntax._ import docspell.backend.BackendApp import docspell.backend.auth.AuthToken @@ -13,7 +15,6 @@ import docspell.backend.ops.OMail.{AttachSelection, ItemMail} import docspell.backend.ops.SendResult import docspell.common._ import docspell.restapi.model._ -import docspell.store.EmilUtil object MailSendRoutes { @@ -37,7 +38,7 @@ object MailSendRoutes { def convertIn(item: Ident, s: SimpleMail): Either[String, ItemMail] = for { - rec <- s.recipients.traverse(EmilUtil.readMailAddress) + rec <- s.recipients.traverse(MailAddress.parse) fileIds <- s.attachmentIds.traverse(Ident.fromString) sel = if (s.addAllAttachments) AttachSelection.All else AttachSelection.Selected(fileIds) } yield ItemMail(item, s.subject, rec, s.body, sel) diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/MailSettingsRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/MailSettingsRoutes.scala index 3586e9f0..97726acb 100644 --- a/modules/restserver/src/main/scala/docspell/restserver/routes/MailSettingsRoutes.scala +++ b/modules/restserver/src/main/scala/docspell/restserver/routes/MailSettingsRoutes.scala @@ -7,7 +7,8 @@ import org.http4s._ import org.http4s.dsl.Http4sDsl import org.http4s.circe.CirceEntityEncoder._ import org.http4s.circe.CirceEntityDecoder._ -import emil.MailAddress +import emil.{MailAddress, SSLType} +import emil.javamail.syntax._ import docspell.backend.BackendApp import docspell.backend.auth.AuthToken @@ -15,7 +16,6 @@ import docspell.backend.ops.OMail import docspell.common._ import docspell.restapi.model._ import docspell.store.records.RUserEmail -import docspell.store.EmilUtil import docspell.restserver.conv.Conversions import docspell.restserver.http4s.QueryParam @@ -90,15 +90,15 @@ object MailSettingsRoutes { ru.smtpPort, ru.smtpUser, ru.smtpPassword, - EmilUtil.mailAddressString(ru.mailFrom), - ru.mailReplyTo.map(EmilUtil.mailAddressString _), - EmilUtil.sslTypeString(ru.smtpSsl), + ru.mailFrom.asUnicodeString, + ru.mailReplyTo.map(_.asUnicodeString), + ru.smtpSsl.name, !ru.smtpCertCheck ) def makeSettings(ems: EmailSettings): Either[String, OMail.SmtpSettings] = { def readMail(str: String): Either[String, MailAddress] = - EmilUtil.readMailAddress(str).left.map(err => s"E-Mail address '$str' invalid: $err") + MailAddress.parse(str).left.map(err => s"E-Mail address '$str' invalid: $err") def readMailOpt(str: Option[String]): Either[String, Option[MailAddress]] = str.traverse(readMail) @@ -106,7 +106,7 @@ object MailSettingsRoutes { for { from <- readMail(ems.from) repl <- readMailOpt(ems.replyTo) - sslt <- EmilUtil.readSSLType(ems.sslType) + sslt <- SSLType.fromString(ems.sslType) } yield OMail.SmtpSettings( ems.name, ems.smtpHost, diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/SentMailRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/SentMailRoutes.scala index 593b3895..d996f374 100644 --- a/modules/restserver/src/main/scala/docspell/restserver/routes/SentMailRoutes.scala +++ b/modules/restserver/src/main/scala/docspell/restserver/routes/SentMailRoutes.scala @@ -6,13 +6,13 @@ import cats.data.OptionT import org.http4s._ import org.http4s.dsl.Http4sDsl import org.http4s.circe.CirceEntityEncoder._ +import emil.javamail.syntax._ import docspell.backend.BackendApp import docspell.backend.auth.AuthToken import docspell.backend.ops.OMail.Sent import docspell.common._ import docspell.restapi.model._ -import docspell.store.EmilUtil object SentMailRoutes { @@ -46,7 +46,7 @@ object SentMailRoutes { s.id, s.senderLogin, s.connectionName, - s.recipients.map(EmilUtil.mailAddressString), + s.recipients.map(_.asUnicodeString), s.subject, s.body, s.created diff --git a/modules/store/src/main/scala/docspell/store/EmilUtil.scala b/modules/store/src/main/scala/docspell/store/EmilUtil.scala deleted file mode 100644 index 749a041a..00000000 --- a/modules/store/src/main/scala/docspell/store/EmilUtil.scala +++ /dev/null @@ -1,38 +0,0 @@ -package docspell.store - -import cats.implicits._ -import emil._ -import emil.javamail.syntax._ - -object EmilUtil { - - def readSSLType(str: String): Either[String, SSLType] = - str.toLowerCase match { - case "ssl" => Right(SSLType.SSL) - case "starttls" => Right(SSLType.StartTLS) - case "none" => Right(SSLType.NoEncryption) - case _ => Left(s"Invalid ssl-type: $str") - } - - def unsafeReadSSLType(str: String): SSLType = - readSSLType(str).fold(sys.error, identity) - - def sslTypeString(st: SSLType): String = - st match { - case SSLType.SSL => "ssl" - case SSLType.StartTLS => "starttls" - case SSLType.NoEncryption => "none" - } - - def readMailAddress(str: String): Either[String, MailAddress] = - MailAddress.parse(str) - - def unsafeReadMailAddress(str: String): MailAddress = - readMailAddress(str).fold(sys.error, identity) - - def readMultipleAddresses(str: String): Either[String, List[MailAddress]] = - str.split(',').toList.map(_.trim).traverse(readMailAddress) - - def mailAddressString(ma: MailAddress): String = - ma.asUnicodeString -} diff --git a/modules/store/src/main/scala/docspell/store/impl/DoobieMeta.scala b/modules/store/src/main/scala/docspell/store/impl/DoobieMeta.scala index 8bc57809..e38c6e20 100644 --- a/modules/store/src/main/scala/docspell/store/impl/DoobieMeta.scala +++ b/modules/store/src/main/scala/docspell/store/impl/DoobieMeta.scala @@ -6,14 +6,13 @@ import io.circe.{Decoder, Encoder} import doobie._ import doobie.implicits.legacy.instant._ import doobie.util.log.Success -import emil.{MailAddress, SSLType} +import emil.doobie.EmilDoobieMeta import com.github.eikek.calev.CalEvent import docspell.common._ import docspell.common.syntax.all._ -import docspell.store.EmilUtil -trait DoobieMeta { +trait DoobieMeta extends EmilDoobieMeta { implicit val sqlLogging = LogHandler({ case e @ Success(_, _, _, _) => @@ -89,16 +88,6 @@ trait DoobieMeta { implicit val metaLanguage: Meta[Language] = Meta[String].imap(Language.unsafe)(_.iso3) - implicit val sslType: Meta[SSLType] = - Meta[String].imap(EmilUtil.unsafeReadSSLType)(EmilUtil.sslTypeString) - - implicit val mailAddress: Meta[MailAddress] = - Meta[String].imap(EmilUtil.unsafeReadMailAddress)(EmilUtil.mailAddressString) - - implicit def mailAddressList: Meta[List[MailAddress]] = - Meta[String].imap(str => str.split(',').toList.map(_.trim).map(EmilUtil.unsafeReadMailAddress))( - lma => lma.map(EmilUtil.mailAddressString).mkString(",") - ) implicit val metaCalEvent: Meta[CalEvent] = Meta[String].timap(CalEvent.unsafe)(_.asString)