summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md4
-rw-r--r--README.md36
-rw-r--r--SendGrid/Example/Program.cs40
-rw-r--r--SendGrid/SendGrid/Client.cs2
-rw-r--r--SendGrid/SendGrid/Properties/AssemblyInfo.cs4
-rw-r--r--SendGrid/SendGrid/Resources/Suppressions.cs60
-rw-r--r--SendGrid/SendGrid/Resources/UnsubscribeGroups.cs10
-rw-r--r--SendGrid/SendGrid/SendGrid.csproj1
-rw-r--r--SendGrid/SendGridMail/Properties/AssemblyInfo.cs4
-rw-r--r--SendGrid/UnitTest/UnitTest.cs46
10 files changed, 197 insertions, 10 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0da8c6b..47d83df 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@
# Change Log
All notable changes to this project will be documented in this file.
+## [6.3.2] - 2015-12-11
+###Added
+- Implemented the suppressions /asm/groups/:group_id/suppressions endpoint [GET, POST, DELETE]
+
## [6.3.1] - 2015-12-10
###Added
- Implemented the unsubscribe groups /asm/groups endpoint [GET, POST, DELETE]
diff --git a/README.md b/README.md
index aa0255d..635fb47 100644
--- a/README.md
+++ b/README.md
@@ -241,6 +241,42 @@ ver unsubscribeGroupId = "<UNSUBSCRIBE GROUP ID>";
HttpResponseMessage responseDelete = client.UnsubscribeGroups.Delete(unsubscribeGroupId).Result;
```
+## Suppressions ##
+
+Please refer to [our documentation](https://sendgrid.com/docs/API_Reference/Web_API_v3/Suppression_Management/suppressions.html) for further details.
+
+Get suppressed addresses for a given group. [GET]
+
+```csharp
+String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
+var client = new SendGrid.Client(apiKey);
+// Leave off .Result for an asyncronous call
+int groupId = <Group ID>;
+HttpResponseMessage responseGet = client.Suppressions.Get(groupId).Result;
+```
+
+Add recipient addresses to the suppressions list for a given group. [POST]
+
+If the group has been deleted, this request will add the address to the global suppression.
+
+```csharp
+String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
+var client = new SendGrid.Client(apiKey);
+string[] emails = { "example@example.com", "example2@example.com" };
+// Leave off .Result for an asyncronous call
+HttpResponseMessage responsePost = client.Suppressions.Post(groupID, emails).Result;
+```
+
+Delete a recipient email from the suppressions list for a group. [DELETE]
+
+```csharp
+String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
+var client = new SendGrid.Client(apiKey);
+ver groupId = "<UNSUBSCRIBE GROUP ID>";
+// Leave off .Result for an asyncronous call
+HttpResponseMessage responseDelete1 = client.Suppressions.Delete(groupId, "example@example.com").Result;
+```
+
#How to: Testing
* Load the solution (We have tested using the Visual Studio Community Edition)
diff --git a/SendGrid/Example/Program.cs b/SendGrid/Example/Program.cs
index 8430e96..753f38c 100644
--- a/SendGrid/Example/Program.cs
+++ b/SendGrid/Example/Program.cs
@@ -18,6 +18,7 @@ namespace Example
// Test viewing, creating, modifying and deleting API keys through our v3 Web API
ApiKeys();
UnsubscribeGroups();
+ Suppressions();
}
private static void SendAsync(SendGrid.SendGridMessage message)
@@ -115,7 +116,7 @@ namespace Example
HttpResponseMessage responseGetUnique = client.UnsubscribeGroups.Get(unsubscribeGroupID).Result;
Console.WriteLine(responseGetUnique.StatusCode);
Console.WriteLine(responseGetUnique.Content.ReadAsStringAsync().Result);
- Console.WriteLine("These is an Unsubscribe Group with ID: " + unsubscribeGroupID.ToString() + ". Press any key to continue.");
+ Console.WriteLine("This is an Unsubscribe Group with ID: " + unsubscribeGroupID.ToString() + ". Press any key to continue.");
Console.ReadKey();
// POST UNSUBSCRIBE GROUP
@@ -138,5 +139,42 @@ namespace Example
Console.WriteLine("Unsubscribe Group Deleted, press any key to end");
Console.ReadKey();
}
+
+ private static void Suppressions()
+ {
+ String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
+ var client = new SendGrid.Client(apiKey);
+
+ // GET SUPPRESSED ADDRESSES FOR A GIVEN GROUP
+ int groupID = 69;
+ HttpResponseMessage responseGetUnique = client.Suppressions.Get(groupID).Result;
+ Console.WriteLine(responseGetUnique.StatusCode);
+ Console.WriteLine(responseGetUnique.Content.ReadAsStringAsync().Result);
+ Console.WriteLine("These are the suppressed emails with group ID: " + groupID.ToString() + ". Press any key to continue.");
+ Console.ReadKey();
+
+ // ADD EMAILS TO A SUPPRESSION GROUP
+ string[] emails = { "example@example.com", "example2@example.com" };
+ HttpResponseMessage responsePost = client.Suppressions.Post(groupID, emails).Result;
+ var rawString = responsePost.Content.ReadAsStringAsync().Result;
+ dynamic jsonObject = JObject.Parse(rawString);
+ Console.WriteLine(responsePost.StatusCode);
+ Console.WriteLine(responsePost.Content.ReadAsStringAsync().Result);
+ Console.WriteLine("Emails added to Suppression Group:" + groupID.ToString() + ". Press any key to continue.");
+ Console.ReadKey();
+
+ // DELETE EMAILS FROM A SUPPRESSION GROUP
+ Console.WriteLine("Deleting emails from Suppression Group, please wait.");
+ HttpResponseMessage responseDelete1 = client.Suppressions.Delete(groupID, "example@example.com").Result;
+ Console.WriteLine(responseDelete1.StatusCode);
+ HttpResponseMessage responseDelete2 = client.Suppressions.Delete(groupID, "example2@example.com").Result;
+ Console.WriteLine(responseDelete2.StatusCode);
+ HttpResponseMessage responseFinal = client.Suppressions.Get(groupID).Result;
+ Console.WriteLine(responseFinal.StatusCode);
+ Console.WriteLine(responseFinal.Content.ReadAsStringAsync().Result);
+ Console.WriteLine("Emails removed from Suppression Group" + groupID.ToString() + "Deleted. Press any key to end");
+ Console.ReadKey();
+ }
+
}
}
diff --git a/SendGrid/SendGrid/Client.cs b/SendGrid/SendGrid/Client.cs
index 0b5383e..fdcaf8b 100644
--- a/SendGrid/SendGrid/Client.cs
+++ b/SendGrid/SendGrid/Client.cs
@@ -15,6 +15,7 @@ namespace SendGrid
private string _apiKey;
public APIKeys ApiKeys;
public UnsubscribeGroups UnsubscribeGroups;
+ public Suppressions Suppressions;
public string Version;
private Uri _baseUri;
private const string MediaType = "application/json";
@@ -35,6 +36,7 @@ namespace SendGrid
Version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
ApiKeys = new APIKeys(this);
UnsubscribeGroups = new UnsubscribeGroups(this);
+ Suppressions = new Suppressions(this);
}
/// <summary>
diff --git a/SendGrid/SendGrid/Properties/AssemblyInfo.cs b/SendGrid/SendGrid/Properties/AssemblyInfo.cs
index b78f1a6..b2996f4 100644
--- a/SendGrid/SendGrid/Properties/AssemblyInfo.cs
+++ b/SendGrid/SendGrid/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("6.3.1")]
-[assembly: AssemblyFileVersion("6.3.1")]
+[assembly: AssemblyVersion("6.3.2")]
+[assembly: AssemblyFileVersion("6.3.2")]
diff --git a/SendGrid/SendGrid/Resources/Suppressions.cs b/SendGrid/SendGrid/Resources/Suppressions.cs
new file mode 100644
index 0000000..91bb38d
--- /dev/null
+++ b/SendGrid/SendGrid/Resources/Suppressions.cs
@@ -0,0 +1,60 @@
+using System.Net.Http;
+using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
+
+namespace SendGrid.Resources
+{
+ public class Suppressions
+ {
+ private string _endpoint;
+ private Client _client;
+
+ /// <summary>
+ /// Constructs the SendGrid Suppressions object.
+ /// See https://sendgrid.com/docs/API_Reference/Web_API_v3/Suppression_Management/suppressions.html
+ /// </summary>
+ /// <param name="client">SendGrid Web API v3 client</param>
+ /// <param name="endpoint">Resource endpoint, do not prepend slash</param>
+ public Suppressions(Client client, string endpoint = "v3/asm/groups")
+ {
+ _endpoint = endpoint;
+ _client = client;
+ }
+
+ /// <summary>
+ /// Get suppressed addresses for a given group.
+ /// </summary>
+ /// <param name="groupId">ID of the suppression group</param>
+ /// <returns>https://sendgrid.com/docs/API_Reference/Web_API_v3/Suppression_Management/suppressions.html</returns>
+ public async Task<HttpResponseMessage> Get(int groupId)
+ {
+ return await _client.Get(_endpoint + "/" + groupId.ToString() + "/suppressions");
+ }
+
+ /// <summary>
+ /// Add recipient addresses to the suppressions list for a given group.
+ ///
+ /// If the group has been deleted, this request will add the address to the global suppression.
+ /// </summary>
+ /// <param name="groupId">ID of the suppression group</param>
+ /// <param name="recipient_emails">Array of email addresses to add to the suppression group</param>
+ /// <returns>https://sendgrid.com/docs/API_Reference/Web_API_v3/Suppression_Management/suppressions.html</returns>
+ public async Task<HttpResponseMessage> Post(int groupId, string[] emails)
+ {
+ JArray receipient_emails = new JArray();
+ foreach (string email in emails) { receipient_emails.Add(email); }
+ var data = new JObject(new JProperty("recipient_emails", receipient_emails));
+ return await _client.Post(_endpoint + "/" + groupId.ToString() + "/suppressions", data);
+ }
+
+ /// <summary>
+ /// Delete a suppression group.
+ /// </summary>
+ /// <param name="groupId">ID of the suppression group to delete</param>
+ /// <returns>https://sendgrid.com/docs/API_Reference/Web_API_v3/Suppression_Management/suppressions.html</returns>
+ public async Task<HttpResponseMessage> Delete(int groupId, string email)
+ {
+ return await _client.Delete(_endpoint + "/" + groupId.ToString() + "/suppressions/" + email);
+ }
+ }
+} \ No newline at end of file
diff --git a/SendGrid/SendGrid/Resources/UnsubscribeGroups.cs b/SendGrid/SendGrid/Resources/UnsubscribeGroups.cs
index 17d8ace..db8e4d2 100644
--- a/SendGrid/SendGrid/Resources/UnsubscribeGroups.cs
+++ b/SendGrid/SendGrid/Resources/UnsubscribeGroups.cs
@@ -22,7 +22,7 @@ namespace SendGrid.Resources
}
/// <summary>
- /// Retrieve all suppression groups associated with the user.s
+ /// Retrieve all suppression groups associated with the user.
/// </summary>
/// <returns>https://sendgrid.com/docs/API_Reference/Web_API_v3/Suppression_Management/groups.html</returns>
public async Task<HttpResponseMessage> Get()
@@ -31,13 +31,13 @@ namespace SendGrid.Resources
}
/// <summary>
- /// Retrieve all suppression groups associated with the user.s
+ /// Get information on a single suppression group.
/// </summary>
+ /// <param name="unsubscribeGroupId">ID of the suppression group to delete</param>
/// <returns>https://sendgrid.com/docs/API_Reference/Web_API_v3/Suppression_Management/groups.html</returns>
- public async Task<HttpResponseMessage> Get(int unsubscribeGroupID)
+ public async Task<HttpResponseMessage> Get(int unsubscribeGroupId)
{
- string endpoint = _endpoint + "/" + unsubscribeGroupID;
- return await _client.Get(endpoint);
+ return await _client.Get(_endpoint + "/" + unsubscribeGroupId);
}
/// <summary>
diff --git a/SendGrid/SendGrid/SendGrid.csproj b/SendGrid/SendGrid/SendGrid.csproj
index 49ea158..9a57b86 100644
--- a/SendGrid/SendGrid/SendGrid.csproj
+++ b/SendGrid/SendGrid/SendGrid.csproj
@@ -64,6 +64,7 @@
<ItemGroup>
<Compile Include="Client.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Resources\Suppressions.cs" />
<Compile Include="Resources\UnsubscribeGroups.cs" />
<Compile Include="Resources\APIKeys.cs" />
</ItemGroup>
diff --git a/SendGrid/SendGridMail/Properties/AssemblyInfo.cs b/SendGrid/SendGridMail/Properties/AssemblyInfo.cs
index e5931d2..debb32a 100644
--- a/SendGrid/SendGridMail/Properties/AssemblyInfo.cs
+++ b/SendGrid/SendGridMail/Properties/AssemblyInfo.cs
@@ -58,5 +58,5 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("6.3.1")]
-[assembly: AssemblyFileVersion("6.3.1")] \ No newline at end of file
+[assembly: AssemblyVersion("6.3.2")]
+[assembly: AssemblyFileVersion("6.3.2")] \ No newline at end of file
diff --git a/SendGrid/UnitTest/UnitTest.cs b/SendGrid/UnitTest/UnitTest.cs
index 853d59e..eab3481 100644
--- a/SendGrid/UnitTest/UnitTest.cs
+++ b/SendGrid/UnitTest/UnitTest.cs
@@ -155,5 +155,51 @@ namespace UnitTest
Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
}
+ [TestFixture]
+ public class Suppressions
+ {
+ static string _baseUri = "https://api.sendgrid.com/";
+ static string _apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY");
+ public Client client = new Client(_apiKey, _baseUri);
+
+ [Test]
+ public void SuppressionsIntegrationTest()
+ {
+ int unsubscribeGroupId = 69;
+
+ TestGet(unsubscribeGroupId);
+ string[] emails = { "example@example.com", "example2@example.com" };
+ TestPost(unsubscribeGroupId, emails);
+ TestDelete(unsubscribeGroupId, "example@example.com");
+ TestDelete(unsubscribeGroupId, "example2@example.com");
+ }
+
+ private void TestGet(int unsubscribeGroupId)
+ {
+ HttpResponseMessage response = client.Suppressions.Get(unsubscribeGroupId).Result;
+ Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
+ string rawString = response.Content.ReadAsStringAsync().Result;
+ dynamic jsonObject = JsonConvert.DeserializeObject(rawString);
+ Assert.IsNotNull(jsonObject);
+ }
+
+ private void TestPost(int unsubscribeGroupId, string[] emails)
+ {
+ HttpResponseMessage response = client.Suppressions.Post(unsubscribeGroupId, emails).Result;
+ Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
+ string rawString = response.Content.ReadAsStringAsync().Result;
+ dynamic jsonObject = JObject.Parse(rawString);
+ string recipient_emails = jsonObject.recipient_emails.ToString();
+ Assert.IsNotNull(recipient_emails);
+ }
+
+ private void TestDelete(int unsubscribeGroupId, string email)
+ {
+ HttpResponseMessage response = client.Suppressions.Delete(unsubscribeGroupId, email).Result;
+ Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
+ }
+
+ }
+
}
}