aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/services/rest
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-06-30 19:38:37 -0700
committervlad <vlad@driver.xyz>2017-06-30 19:38:37 -0700
commit96d81a36286e41035ff4068859a3b0f9da924fbc (patch)
tree8d9f0014140d1f07ca449b56adaba8ccb3d2fc59 /src/main/scala/xyz/driver/pdsuidomain/services/rest
parenta997aa6539d1f0af4ab4fc395ff2033335da312a (diff)
downloadrest-query-96d81a36286e41035ff4068859a3b0f9da924fbc.tar.gz
rest-query-96d81a36286e41035ff4068859a3b0f9da924fbc.tar.bz2
rest-query-96d81a36286e41035ff4068859a3b0f9da924fbc.zip
Latest PDS UI utils including all the domain stuffv0.1.12
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services/rest')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/SendGridMailService.scala45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/SendGridMailService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/SendGridMailService.scala
new file mode 100644
index 0000000..37dc758
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/SendGridMailService.scala
@@ -0,0 +1,45 @@
+package xyz.driver.pdsuidomain.services.rest
+
+import com.sendgrid._
+import xyz.driver.pdsuicommon.logging._
+import xyz.driver.pdsuidomain.services.MailService
+import xyz.driver.pdsuidomain.services.MailService.Template
+import xyz.driver.pdsuidomain.services.rest.SendGridMailService._
+
+import scala.util.control.NonFatal
+
+object SendGridMailService {
+
+ private val ExpectedHttpCode = 202
+
+ case class Settings(provider: String, frontEndUrl: String, apiKey: String, from: String)
+}
+
+class SendGridMailService(settings: Settings) extends MailService with PhiLogging {
+
+ def sendTo(email: String, template: Template): Boolean = {
+ val to = new Email(email)
+ val content = new Content(template.contentType, template.content)
+ val mail = new Mail(new Email(settings.from), template.subject, to, content)
+
+ val request = new Request()
+ val sendGrid = new SendGrid(settings.apiKey)
+
+ try {
+ request.method = Method.POST
+ request.endpoint = "mail/send"
+ request.body = mail.build()
+ val response = sendGrid.api(request)
+ if (response.statusCode != ExpectedHttpCode) {
+ logger.error(phi"Unexpected response: ${Unsafe(response.statusCode)}, ${Unsafe(response.body.take(100))}")
+ }
+
+ response.statusCode == ExpectedHttpCode
+ }
+ catch {
+ case NonFatal(e) =>
+ logger.error(phi"Can not send an email: $e")
+ false
+ }
+ }
+}