summaryrefslogtreecommitdiffstats
path: root/SendGrid/SendGridMail
diff options
context:
space:
mode:
Diffstat (limited to 'SendGrid/SendGridMail')
-rwxr-xr-xSendGrid/SendGridMail/Header.cs36
-rwxr-xr-xSendGrid/SendGridMail/ISendGrid.cs2
-rwxr-xr-xSendGrid/SendGridMail/Properties/AssemblyInfo.cs7
-rwxr-xr-xSendGrid/SendGridMail/SendGrid.cs64
4 files changed, 63 insertions, 46 deletions
diff --git a/SendGrid/SendGridMail/Header.cs b/SendGrid/SendGridMail/Header.cs
index 9aaa440..c1138d8 100755
--- a/SendGrid/SendGridMail/Header.cs
+++ b/SendGrid/SendGridMail/Header.cs
@@ -7,11 +7,11 @@ namespace SendGridMail
{
public class Header : IHeader
{
- private readonly FilterNode _settings;
+ private readonly HeaderSettingsNode _settings;
public Header()
{
- _settings = new FilterNode();
+ _settings = new HeaderSettingsNode();
}
public void AddSubVal(string tag, IEnumerable<string> substitutions)
@@ -48,7 +48,7 @@ namespace SendGridMail
public void AddFilterSetting(string filter, IEnumerable<string> settings, string value)
{
- var keys = new List<string>() {"filters", "data", filter, "settings"}.Concat(settings).ToList();
+ var keys = new List<string>() { "data", "filters", filter, "settings" }.Concat(settings).ToList();
_settings.AddSetting(keys, value);
}
@@ -63,15 +63,15 @@ namespace SendGridMail
return _settings.ToJson();
}
- internal class FilterNode
+ internal class HeaderSettingsNode
{
- private readonly Dictionary<String, FilterNode> _branches;
+ private readonly Dictionary<String, HeaderSettingsNode> _branches;
private IEnumerable<String> _array;
private String _leaf;
- public FilterNode()
+ public HeaderSettingsNode()
{
- _branches = new Dictionary<string, FilterNode>();
+ _branches = new Dictionary<string, HeaderSettingsNode>();
}
public void AddArray(List<String> keys, IEnumerable<String> value)
@@ -87,7 +87,7 @@ namespace SendGridMail
var key = keys.First();
if (!_branches.ContainsKey(key))
- _branches[key] = new FilterNode();
+ _branches[key] = new HeaderSettingsNode();
var remainingKeys = keys.Skip(1).ToList();
_branches[key].AddArray(remainingKeys, value);
@@ -107,7 +107,7 @@ namespace SendGridMail
var key = keys.First();
if (!_branches.ContainsKey(key))
- _branches[key] = new FilterNode();
+ _branches[key] = new HeaderSettingsNode();
var remainingKeys = keys.Skip(1).ToList();
_branches[key].AddSetting(remainingKeys, value);
@@ -130,6 +130,22 @@ namespace SendGridMail
return _branches[key].GetSetting(remainingKeys);
}
+ public IEnumerable<String> GetArray(params String[] keys)
+ {
+ return GetArray(keys.ToList());
+ }
+
+ public IEnumerable<String> GetArray(List<String> keys)
+ {
+ if (keys.Count == 0)
+ return _array;
+ var key = keys.First();
+ if (!_branches.ContainsKey(key))
+ throw new ArgumentException("Bad key path!");
+ var remainingKeys = keys.Skip(1).ToList();
+ return _branches[key].GetArray(remainingKeys);
+ }
+
public String GetLeaf()
{
return _leaf;
@@ -142,7 +158,7 @@ namespace SendGridMail
if (_leaf != null)
return JsonUtils.Serialize(_leaf);
if (_array != null)
- return "[" + String.Join(",", _array.Select(i => JsonUtils.Serialize(i))) + "]";
+ return "[" + String.Join(", ", _array.Select(i => JsonUtils.Serialize(i))) + "]";
return "{}";
}
diff --git a/SendGrid/SendGridMail/ISendGrid.cs b/SendGrid/SendGridMail/ISendGrid.cs
index e8e5fb2..8c07947 100755
--- a/SendGrid/SendGridMail/ISendGrid.cs
+++ b/SendGrid/SendGridMail/ISendGrid.cs
@@ -45,7 +45,7 @@ namespace SendGridMail
void AddBcc(IEnumerable<String> addresses);
void AddBcc(IDictionary<String, IDictionary<String, String>> addresssInfo);
- void AddSubVal(String tag, String value);
+ void AddSubVal(String tag, params String[] value);
void AddAttachment(String filePath);
void AddAttachment(Attachment attachment);
diff --git a/SendGrid/SendGridMail/Properties/AssemblyInfo.cs b/SendGrid/SendGridMail/Properties/AssemblyInfo.cs
index 0cefaba..0108aa9 100755
--- a/SendGrid/SendGridMail/Properties/AssemblyInfo.cs
+++ b/SendGrid/SendGridMail/Properties/AssemblyInfo.cs
@@ -23,6 +23,13 @@ using System.Runtime.InteropServices;
[assembly: Guid("193fa200-8430-4206-aacd-2d2bb2dfa6cf")]
[assembly: InternalsVisibleTo("Tests")]
+[assembly:InternalsVisibleTo("DynamicProxyGenAssembly2," +
+"1310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b" +
+"PublicKey=002400000480000094000000060200000024000052534" +
+"3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d926665" +
+"4753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb" +
+"4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c486" +
+"1eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
// Version information for an assembly consists of the following four values:
//
diff --git a/SendGrid/SendGridMail/SendGrid.cs b/SendGrid/SendGridMail/SendGrid.cs
index 750a9ff..8ad0216 100755
--- a/SendGrid/SendGridMail/SendGrid.cs
+++ b/SendGrid/SendGridMail/SendGrid.cs
@@ -12,12 +12,19 @@ namespace SendGridMail
{
public class SendGrid : ISendGrid
{
+ #region constants/vars
+ //private/constant vars:
private Dictionary<String, String> _filters;
+ private MailMessage message;
+
+ // TODO find appropriate types for these
+ const string encoding = "quoted-printable";
+ const string charset = "utf-8";
//apps list and settings
private const String ReText = @"<\%\s*\%>";
private const String ReHtml = @"<\%\s*[^\s]+\s*\%>";
-
+ #endregion
public void InitializeFilters()
{
@@ -37,28 +44,6 @@ namespace SendGridMail
};
}
- private MailMessage message;
-
- // TODO find appropriate types for these
- const string encoding = "quoted-printable";
- const string charset = "utf-8";
-
- /*
- if (Html != null )
- {
- AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, null, "text/html");
- message.AlternateViews.Add(htmlView);
- }
-
- if (Text != null )
- {
- AlternateView plainView = AlternateView.CreateAlternateViewFromString(Text, null, "text/plain");
- message.AlternateViews.Add(plainView);
- }
-
- message.BodyEncoding = Encoding.GetEncoding(charset);
- */
-
public SendGrid(MailAddress from, MailAddress[] to, MailAddress[] cc, MailAddress[] bcc,
String subject, String html, String text, TransportType transport, IHeader header = null )
{
@@ -70,8 +55,6 @@ namespace SendGridMail
Cc = cc;
Bcc = bcc;
- _subs = new Dictionary<string, string>();
-
message.Subject = subject;
message.SubjectEncoding = Encoding.GetEncoding(charset);
@@ -162,10 +145,8 @@ namespace SendGridMail
}
public IHeader Header { get; set; }
-
public String Html { get; set; }
public String Text { get; set; }
-
public TransportType Transport { get; set; }
#endregion
@@ -254,15 +235,13 @@ namespace SendGridMail
}
}
- private Dictionary<string, string> _subs;
-
- public void AddSubVal(string tag, string value)
+ public void AddSubVal(String tag, params String[] value)
{
//let the system complain if they do something bad, since the function returns null
- _subs[tag] = value;
+ Header.AddSubVal(tag, value);
}
- public void AddAttachment(string filePath)
+ public void AddAttachment(String filePath)
{
var data = new Attachment(filePath, MediaTypeNames.Application.Octet);
message.Attachments.Add(data);
@@ -276,9 +255,10 @@ namespace SendGridMail
public void AddAttachment(Stream attachment, ContentType type)
{
var data = new Attachment(attachment, type);
+ message.Attachments.Add(data);
}
- public IEnumerable<string> GetRecipients()
+ public IEnumerable<String> GetRecipients()
{
List<MailAddress> tos = message.To.ToList();
List<MailAddress> ccs = message.CC.ToList();
@@ -288,12 +268,12 @@ namespace SendGridMail
return rcpts;
}
- private string Get(string field)
+ private string Get(String field)
{
throw new NotImplementedException();
}
- private void Set(string field, string value)
+ private void Set(String field, String value)
{
throw new NotImplementedException();
}
@@ -454,6 +434,20 @@ namespace SendGridMail
if (!String.IsNullOrEmpty(smtpapi))
message.Headers.Add("X-SmtpApi", "{" + smtpapi + "}");
+ if (Html != null)
+ {
+ AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Html, null, "text/html");
+ message.AlternateViews.Add(htmlView);
+ }
+
+ if (Text != null)
+ {
+ AlternateView plainView = AlternateView.CreateAlternateViewFromString(Text, null, "text/plain");
+ message.AlternateViews.Add(plainView);
+ }
+
+ message.BodyEncoding = Encoding.GetEncoding(charset);
+
return message;
}