Skip to content
This repository has been archived by the owner on Aug 9, 2024. It is now read-only.

Commit

Permalink
Add SendGrid send email responder (close #84)
Browse files Browse the repository at this point in the history
  • Loading branch information
rzats committed Jun 29, 2017
1 parent 184fb55 commit d31303b
Show file tree
Hide file tree
Showing 10 changed files with 738 additions and 17 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ env:
- secure: DMlGSBmgzXV3aPrV79Lk6V+dMeH2O863vgq6F9rdV1zmFUc7yP1j1bgYiWXR11GJr0N7jaZRs/2qxJSOTQu8HHQwP+miUONAMIhnaiDps9aBWpCNEmUP/SinmGhCfkWSRWq4gXdz+OWJsABa22OFDOFsyR0bHJo4tDO5O5bcvKB5ZE3jfKL2pKjVeXBaOT+z8WKnW3U6ObHxgpfX7obLzH7p1zbdj0OA2ggdzM4cNuvl6MwFZI2brpQ9xynvvxgGJMq8XlpsI5WTxvxh8nv1zh/JD8MNU7twz1RhdP6i4a+GbVgdJ+fy7AFBiY5jz/LxnrBYMAEatmM4SbZtONUOYQE++6Hc7NyhcfWnW4KN4s/wxGprw6hiB7LAd/rAIRV6rJRdwEROz7rfpzWykcsppbLRXUIJiyvL9TNqVU2A1ZsA9Y56tlDOqYrfCo40oEB8bjetJBOQ85NKiLCOZ05lqiEfWpTmLTiLWTNyv/dhes9IWap2BNr1xiwdxhmfvXfCe9z79fn440CtCOLzt7sCnt++kZaij3gega1v7OfDjm5COB2hx96HFGeoeund8++pD9cT3iR+55Mphm6yR4QT0jQ/p4mSvdZbXnuHAhxgKBiwyiRkCKFARjjKfMxz4hzgpUe6hDkuqMQ9BEZQOMwp07gocTI12K6KQln+Zv789Zc=
- secure: NFs7slWWJLQRmCDPbWfBUjTo9TOTc3wem+IFN97ZUoV8Zjwsc+XhLSyFJzph1u9HBt3wAljcGFKkerLv7EEeqhgBbFz7CV8/8nk8aujTLLONHOVdG956x+THOsNw/DEXufzppwRMGQUcICJzhgK5lLPzE1bNNbv3h2lcEjoH29QTON7XVjMrwvue6IZB61asgBlVFy2LHteC/QmQlPp5vsaCOSBdQDwX/htfSUXX+ipncAB0/iwxjWs4F1KLn+608At7w+9kUrXmcyhRIByC9DaFBp5IGl0yMJaIM9hUdxm/Qbb8sE3wMiWT+1G6Sjh2h17zdUWIVL1oJ46AJn0SVAwbPXsWKF9frfaCzZhcy3+j+savmVKgWNutd5l0NiATseILE65y+vFVSPnVuAhunVz0M3/7juBtGT5TwE79anCd1FUVc3GYC+8PEMvzC1yTfigG3LEHL25k8CxrNOdU5ovNlz1GaAQDe9u7Bqgf49+fhLT3JbvRgaIJlZ13QYzMIZG10GB/4F2cYqUChsoSHJrMKDOZh265Xgq3ViiwxcJHygzpMwxYI/p1dqOqdofQOI0Ya8f5v2h2mEFHOSAkRcU1WPde7DYlLvbCyXKzujdMzK0/eZlxeuUiL/pS7purBsS2TURyl/urOgqa1snjuPkiyp3R+Y7szyCQyIbTGII=
- secure: IBxHwtWMR05+LkAnSInvQ/AysXYCMeUlFBfpI9j2Y4gSU6IBeKoiIlUGGyFS+Yesqzg79mIvewyoCitNvcn43oc8XplC1q4QWmiHGZREoFdcvyD1ozTVYTOCk1eTRh60iHKxHdtO1vBUq3VQFI8ko1sctFJ0K3+zn+qfDviPw6rR+4T20m9l4PrSTD213faLda/Vnx5EQEbFvwWMUTodEtKK4xOdVPstNEK7Km948eUurcJS6HECvGm1cB/e4GRpJ3mLSV27OL0YwJNxCsIRpE6h4l3ehqeWxAnuMcEFVMFdT5vhoRqGS7jBGZIwZMPsHp8jFRKs3/K/FgqqvKCPpAjib3j3W97F5E30Sw1+9nEa0foilRYuvFW2YbmhlEyn5mwMUA9oh6v9b9hEJH00dqebGqoT3CsGnutuO4x7e8b0QgOXlJy8OmtvCW0loMe9EE8THp6VYhSvbaiCyjAEWnabkhkSjIt/jhdnJhkB3ISU9JBiiRL3zi+LkKxlRz4LQXtqKSZ46XjwcvYg29I3XbTiTIdM/oUdIj94HKqSAT2Z36/IxIaNaiR2CQrkxpu0toSpaDBUmeXVUdBhhNBX9dRuGzogIfsaDbRyDKMjCnn2HzBhSzBtxmcxjjoeFSj7Egb/c8+2lW9AomnHQktMae0zWT5qsoanA0hPRp4eDUI=
- secure: 4cyxu37VZhnQwsGz7sdF1OG554EfYtAz5VyN4k4g4M/gXfWiFPUobfTGdmUXLmnFDRUh62RGhvSqLM8bEinv1ot5daMD5mtZdhx6jF7cmyXetkHFJGS1naf7QH7097ZIQNqUD+dnbmi4jodYKwik3hIGHKx/8HqBeeFlAMA1Ue1BPjsr6Yxbctj9V0NM0GyuR5Ug0Z/rwgWxV897CCyOekXH0dLMJqG/oZyPiE1c9xEnCKimo7HloXPviy7KitJQechrAzey+7Qz6EGAcEJW+Cnv1lvY8MJx1hKYXBDYGb7EoYQSLmAmEOyhfhNxdibEAUuOaLShb7/WwnMcLUIN/5moaqdjwck8kvFdTMNcduOTxvDiP1M8K3lMlmn4RWSn/QwBd6ozKSUQef1TIkHcnDyEYhGcIcokzSpci5ejh+lfyQBz9qi+lS6sLd35dgiZitG5iyhfxAOOO/gyDH6lRmBxSeugY+LJnRzN7tDidyu+depqaDv9bhtRFKX2ob23lr5+neMXtn4FX/Xp5uX1vrvPKeX93rq0k4kDiwNHewTaV+ihBNQ9cNGpkvHUrJ9xuc9CR4nd47XxGf1QsJPMXPXX1bP+qyUyIE3UsehKd+3tgpusaKj2KeI4MQSU41BzYKWyxE5WcM2k6CVBYNyuOLXCYaY26hjxJvbOGH2uobE=
- secure: W4pNNS4UjVWRW+5LysjsY3UEbCQ6Xp6O5ZmsxzehgNStqECvRUXhltG1EcZLRlNJPR3P1yTvk3o1tox052flhgBLt86XYGQ0+7am74zJ4+tOvZBD+JkXxwCaF37O71PjfT8IVgCanWm/fu5FP+hbZt64I/99W3MJJd1JQA5Qrx5Agi8MlJMgcLz9Dqaej/mU6IuRlXoPCq1wLyz9ggyreA/dYmP8p1Vt/XwqcBrp5PWdNDR80jcnuwS1Sozn73zDMITgTcbywOHx9K48lyhYYODZ4/Tjhjs2V/DCp+TNGcgezv5RcQKtYZ6lTd2s36bhSGfmTzKI0BK8e3bZlSll4spGAcoIfSmNRNb/44a7ZrmF3yDiBM/TePNBDJ+p4eWp+xKfF6EddJE2/sHjTbxov+1AjUKDhkD8rLg9GK0Bf+5X4QiB4l394fkCQyyW3l85c/Y+4nkMk0kQVpHB4d4O/2wLDCKUJMbBgq8tnv9PuY0tlqjlLeKW4xHaJ4GCRgb/aJkZgwSekWGOydUDDnhgOE2H0P0V+tNGb4C/qn8SUQifKX7XenRU1nzBAJ+Dh/U7csMbq2eEKE8zjJwbV+97hS6FN0VlvOwaPedGPyHfgTal+wstKaXAYDMx72BohFm+O7zb6+ny3BDAh9ukETfKuMklTYa5dQys9+DjYMZrPO0=
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"namespace": "com.snowplowanalytics.sauna.responders",
"name": "SendgridConfig_1_0_1",
"type": "record",
"fields": [
{
"name": "enabled",
"type": "boolean"
},
{
"name": "id",
"type": "string"
},
{
"name": "parameters",
"type": {
"name": "SendgridConfigParameters_1_0_1",
"type": "record",
"fields": [
{
"name": "recipientsEnabled",
"type": "boolean"
},
{
"name": "emailsEnabled",
"type": "boolean",
"default": false
},
{
"name": "apiKeyId",
"type": "string"
}
]
}
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ case class SaunaOptions(configurationLocation: File) {
getConfig[loggers.HipchatConfig_1_0_0],
getConfig[responders.OptimizelyConfig_1_0_0],
getConfig[responders.SendgridConfig_1_0_0],
getConfig[responders.SendgridConfig_1_0_1],
getConfig[responders.HipchatConfig_1_0_0],
getConfig[responders.SlackConfig_1_0_0],
getConfig[responders.PagerDutyConfig_1_0_0],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ package com.snowplowanalytics.sauna
* @param amazonDynamodbConfig optional DynamoDB logger configuration
* @param hipchatLoggerConfig optional Hipchat logger configuration
* @param optimizelyConfig optional Optimizely responders configuration
* @param sendgridConfig optional Sendgrid resonder configuration
* @param sendgridConfig_1_0_0 optional Sendgrid responder configuration (schema ver. 1-0-0)
* @param sendgridConfig_1_0_1 optional Sendgrid responder configuration (schema ver. 1-0-1)
* @param hipchatResponderConfig optional Hipchat responder configuration
* @param slackConfig optional Slack responder configuration
* @param pagerDutyConfig optional PagerDuty responder configuration
Expand All @@ -34,7 +35,8 @@ case class SaunaSettings(

// Responders
optimizelyConfig: Option[responders.OptimizelyConfig_1_0_0],
sendgridConfig: Option[responders.SendgridConfig_1_0_0],
sendgridConfig_1_0_0: Option[responders.SendgridConfig_1_0_0],
sendgridConfig_1_0_1: Option[responders.SendgridConfig_1_0_1],
hipchatResponderConfig: Option[responders.HipchatConfig_1_0_0],
slackConfig: Option[responders.SlackConfig_1_0_0],
pagerDutyConfig: Option[responders.PagerDutyConfig_1_0_0],
Expand All @@ -45,5 +47,5 @@ case class SaunaSettings(
amazonKinesisConfigs: List[observers.AmazonKinesisConfig_1_0_0])

object SaunaSettings {
def apply(): SaunaSettings = SaunaSettings(None, None, None, None, None, None, None, Nil, Nil, Nil)
def apply(): SaunaSettings = SaunaSettings(None, None, None, None, None, None, None, None, Nil, Nil, Nil)
}
30 changes: 25 additions & 5 deletions src/main/scala/com.snowplowanalytics.sauna/actors/Mediator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -382,21 +382,41 @@ object Mediator {

/**
* Function producing `Props` (still requiring logger) for Sendgrid responders
* (only `RecipientsResponder` so far)
* ([[RecipientsResponder]] and [[SendEmailResponder]])
*
* @param saunaSettings global settings object
* @return list of functions that accept logger and produce sendgrid responders
*/
def sendgridCreator(saunaSettings: SaunaSettings): List[ActorConstructor] = {
saunaSettings.sendgridConfig match {
case Some(SendgridConfig_1_0_0(true, id, params)) =>
val sendgrid_1_0_0_constructor: List[ActorConstructor] = saunaSettings.sendgridConfig_1_0_0.collect {
case SendgridConfig_1_0_0(true, id, params) =>

val apiWrapper: Sendgrid = new Sendgrid(params.apiKeyId)

if (params.recipientsEnabled) {
((logger: SaunaLogger) => (id, RecipientsResponder.props(logger, apiWrapper))) :: Nil
} else Nil

case _ => Nil
}
}.getOrElse(Nil)

val sendgrid_1_0_1_constructor: List[ActorConstructor] = saunaSettings.sendgridConfig_1_0_1.collect {
case SendgridConfig_1_0_1(true, id, params) =>

val apiWrapper: Sendgrid = new Sendgrid(params.apiKeyId)

val recipientsProps = if (params.recipientsEnabled) {
((logger: SaunaLogger) => (id, RecipientsResponder.props(logger, apiWrapper))) :: Nil
} else Nil

val emailProps = if (params.emailsEnabled) {
((logger: SaunaLogger) => (id, SendEmailResponder.props(apiWrapper, logger))) :: Nil
} else Nil

recipientsProps ++ emailProps

}.getOrElse(Nil)

sendgrid_1_0_0_constructor ++ sendgrid_1_0_1_constructor
}

/**
Expand Down
Loading

0 comments on commit d31303b

Please sign in to comment.