public void Binding_UsesNameResolver() { ParameterInfo parameter = GetType().GetMethod("TestMethod", BindingFlags.Static | BindingFlags.NonPublic).GetParameters().First(); SendGridAttribute attribute = new SendGridAttribute { To = "%param1%", From = "%param2%", Subject = "%param3%", Text = "%param4%" }; SendGridConfiguration config = new SendGridConfiguration { ApiKey = "12345" }; Dictionary<string, Type> contract = new Dictionary<string, Type>(); BindingProviderContext context = new BindingProviderContext(parameter, contract, CancellationToken.None); var nameResolver = new TestNameResolver(); nameResolver.Values.Add("param1", "*****@*****.**"); nameResolver.Values.Add("param2", "*****@*****.**"); nameResolver.Values.Add("param3", "Value3"); nameResolver.Values.Add("param4", "Value4"); SendGridBinding binding = new SendGridBinding(parameter, attribute, config, nameResolver, context); Dictionary<string, object> bindingData = new Dictionary<string, object>(); SendGridMessage message = binding.CreateDefaultMessage(bindingData); Assert.Equal("*****@*****.**", message.To.Single().Address); Assert.Equal("*****@*****.**", message.From.Address); Assert.Equal("Value3", message.Subject); Assert.Equal("Value4", message.Text); }
public SendGridBinding(ParameterInfo parameter, SendGridAttribute attribute, SendGridConfiguration config, INameResolver nameResolver, BindingProviderContext context) { _parameter = parameter; _attribute = attribute; _config = config; _nameResolver = nameResolver; _sendGrid = new Web(_config.ApiKey); if (!string.IsNullOrEmpty(_attribute.To)) { _toFieldBindingTemplate = CreateBindingTemplate(_attribute.To, context.BindingDataContract); } if (!string.IsNullOrEmpty(_attribute.From)) { _fromFieldBindingTemplate = CreateBindingTemplate(_attribute.From, context.BindingDataContract); } if (!string.IsNullOrEmpty(_attribute.Subject)) { _subjectFieldBindingTemplate = CreateBindingTemplate(_attribute.Subject, context.BindingDataContract); } if (!string.IsNullOrEmpty(_attribute.Text)) { _textFieldBindingTemplate = CreateBindingTemplate(_attribute.Text, context.BindingDataContract); } }
/// <summary> /// Enables use of the SendGrid extensions /// </summary> /// <param name="config">The <see cref="JobHostConfiguration"/> to configure.</param> /// <param name="sendGridConfig">The <see cref="SendGridConfiguration"/> to use.</param> public static void UseSendGrid(this JobHostConfiguration config, SendGridConfiguration sendGridConfig = null) { if (config == null) { throw new ArgumentNullException("config"); } if (sendGridConfig == null) { sendGridConfig = new SendGridConfiguration(); } config.RegisterExtensionConfigProvider(new SendGridExtensionConfig(sendGridConfig)); }
public void CreateDefaultMessage_CreatesExpectedMessage() { ParameterInfo parameter = GetType().GetMethod("TestMethod", BindingFlags.Static | BindingFlags.NonPublic).GetParameters().First(); SendGridAttribute attribute = new SendGridAttribute { To = "{Param1}", Subject = "Test {Param2}", Text = "Test {Param3}" }; SendGridConfiguration config = new SendGridConfiguration { ApiKey = "12345", FromAddress = new MailAddress("*****@*****.**", "Test2"), ToAddress = "*****@*****.**" }; Dictionary<string, Type> contract = new Dictionary<string, Type>(); contract.Add("Param1", typeof(string)); contract.Add("Param2", typeof(string)); contract.Add("Param3", typeof(string)); BindingProviderContext context = new BindingProviderContext(parameter, contract, CancellationToken.None); var nameResolver = new TestNameResolver(); SendGridBinding binding = new SendGridBinding(parameter, attribute, config, nameResolver, context); Dictionary<string, object> bindingData = new Dictionary<string, object>(); bindingData.Add("Param1", "*****@*****.**"); bindingData.Add("Param2", "Value2"); bindingData.Add("Param3", "Value3"); SendGridMessage message = binding.CreateDefaultMessage(bindingData); Assert.Same(config.FromAddress, message.From); Assert.Equal("*****@*****.**", message.To.Single().Address); Assert.Equal("Test Value2", message.Subject); Assert.Equal("Test Value3", message.Text); // If no To value specified, verify it is defaulted from config attribute = new SendGridAttribute { Subject = "Test {Param2}", Text = "Test {Param3}" }; binding = new SendGridBinding(parameter, attribute, config, nameResolver, context); message = binding.CreateDefaultMessage(bindingData); Assert.Equal("*****@*****.**", message.To.Single().Address); }
public SendGridAttributeBindingProvider(SendGridConfiguration config, INameResolver nameResolver) { _config = config; _nameResolver = nameResolver; }
public SendGridExtensionConfig(SendGridConfiguration sendGridConfig) { _sendGridConfig = sendGridConfig; }