Add project files.
This commit is contained in:
		
							parent
							
								
									156f8fa112
								
							
						
					
					
						commit
						29b6e62494
					
				| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					Client ID:
 | 
				
			||||||
 | 
					6f7f08a5dcc30e18d41888c47dc6c276
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					API Key:
 | 
				
			||||||
 | 
					7cb8625ed34fbc298521f66b9e491ec3df53859a892c92d3
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <OutputType>Exe</OutputType>
 | 
				
			||||||
 | 
					    <TargetFramework>net8.0</TargetFramework>
 | 
				
			||||||
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <PackageReference Include="RestSharp" Version="112.1.0" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,25 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Microsoft Visual Studio Solution File, Format Version 12.00
 | 
				
			||||||
 | 
					# Visual Studio Version 17
 | 
				
			||||||
 | 
					VisualStudioVersion = 17.9.34723.18
 | 
				
			||||||
 | 
					MinimumVisualStudioVersion = 10.0.40219.1
 | 
				
			||||||
 | 
					Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptOutFetcher", "OptOutFetcher.csproj", "{2FBB934D-7099-4C05-BF0F-5C044B9F3B7E}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Global
 | 
				
			||||||
 | 
						GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
				
			||||||
 | 
							Debug|Any CPU = Debug|Any CPU
 | 
				
			||||||
 | 
							Release|Any CPU = Release|Any CPU
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
						GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
				
			||||||
 | 
							{2FBB934D-7099-4C05-BF0F-5C044B9F3B7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{2FBB934D-7099-4C05-BF0F-5C044B9F3B7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{2FBB934D-7099-4C05-BF0F-5C044B9F3B7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{2FBB934D-7099-4C05-BF0F-5C044B9F3B7E}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
						GlobalSection(SolutionProperties) = preSolution
 | 
				
			||||||
 | 
							HideSolutionNode = FALSE
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
						GlobalSection(ExtensibilityGlobals) = postSolution
 | 
				
			||||||
 | 
							SolutionGuid = {4E45E6B3-8352-473C-BAFC-997B649FA663}
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
					EndGlobal
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,95 @@
 | 
				
			||||||
 | 
					using RestSharp;
 | 
				
			||||||
 | 
					using System.Text.Json.Nodes;
 | 
				
			||||||
 | 
					using System.Text.Json;
 | 
				
			||||||
 | 
					using System.Net;
 | 
				
			||||||
 | 
					using RestSharp.Authenticators;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
						Campaign Monitor API reference: https://www.campaignmonitor.com/api/v3-3/getting-started/
 | 
				
			||||||
 | 
						Dobbs API key/client ID available from Josh in \\KM202401\c$\Users\joshdeck.KEYMTV\Documents\Misc\OptOutFetcher
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					internal class Program
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						static void Main(string[] args)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							Console.Write("Date to start at (leave blank for all entries): ");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Add to list testing
 | 
				
			||||||
 | 
							//var data = AddNewSubscribers("");
 | 
				
			||||||
 | 
							//Console.WriteLine(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Unsubscribe testing
 | 
				
			||||||
 | 
							//UnsubscribeUser("");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Opt Out Testing
 | 
				
			||||||
 | 
							string date = Console.ReadLine();
 | 
				
			||||||
 | 
							var data = GetOptOuts(date);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Output the data; TODO replace with writing to a service or something
 | 
				
			||||||
 | 
							Console.WriteLine(data);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static RestClient InitializeAndGetClient()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							var cookieJar = new CookieContainer();
 | 
				
			||||||
 | 
							var options = new RestClientOptions("https://api.createsend.com")
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Authenticator = new HttpBasicAuthenticator("7cb8625ed34fbc298521f66b9e491ec3df53859a892c92d3", "x")
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
							return new RestClient(options);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static JsonNode? GetOptOuts(string fromDate)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							var client = InitializeAndGetClient();
 | 
				
			||||||
 | 
							var request = new RestRequest();
 | 
				
			||||||
 | 
							if (fromDate != "")
 | 
				
			||||||
 | 
								request = new RestRequest("api/v3.3/lists/3bb5109cdf3265eac26b3fa34ffae379/unsubscribed.json?date=" + fromDate);
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								request = new RestRequest("api/v3.3/lists/3bb5109cdf3265eac26b3fa34ffae379/unsubscribed.json");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var response = client.ExecuteGet(request);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return JsonSerializer.Deserialize<JsonNode>(response.Content!)!;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static JsonNode? AddNewSubscribers(string fileName)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// TODO: for testing we just use a dummy list, but once we actually merge the two lists we are going to want to read from file/service
 | 
				
			||||||
 | 
							string add_request_params = "{ \"EmailAddress\": \"joshdeck@keymotive.net\", \"Name\": \"Joshua Deck\",\"MobileNumber\":\"+8884227390\",\"CustomFields\": [ ], \"Resubscribe\": true,\"RestartSubscriptionBasedAutoresponders\": true, \"ConsentToTrack\": \"No\", \"ConsentToSendSms\":\"No\"}";
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var client = InitializeAndGetClient();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// This is only adding one. To add multiple, format body as: https://www.campaignmonitor.com/api/v3-3/subscribers/#importing-many-subscribers
 | 
				
			||||||
 | 
							// and POST this url: https://api.createsend.com/api/v3.3/subscribers/3bb5109cdf3265eac26b3fa34ffae379/import.json
 | 
				
			||||||
 | 
							var request = new RestRequest("api/v3.3/subscribers/3bb5109cdf3265eac26b3fa34ffae379.json");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							request.AddBody(add_request_params);
 | 
				
			||||||
 | 
							var response = client.ExecutePost(request);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return JsonSerializer.Deserialize<JsonNode>(response.Content!)!;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static void UnsubscribeUser(string fileName)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// TODO: change this to a file
 | 
				
			||||||
 | 
							string unsub_request_params = "{ \"EmailAddress\": \"joshdeck@keymotive.net\" }";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var client = InitializeAndGetClient();
 | 
				
			||||||
 | 
							var request = new RestRequest("api/v3.3/subscribers/3bb5109cdf3265eac26b3fa34ffae379/unsubscribe.json");
 | 
				
			||||||
 | 
							request.AddBody(unsub_request_params);
 | 
				
			||||||
 | 
							var response = client.ExecutePost(request);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Console.WriteLine(response.Content + "Done unsubscribing");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue