public async Task <bool> AddNewMarketingContact(MarketingContact marketingContact) { MarketingContactDetails marketingContactDetails = new MarketingContactDetails() { contacts = new Contact[1] { new Contact() { first_name = marketingContact.FirstName, last_name = marketingContact.LastName, email = marketingContact.EmailAddress } } }; string requestBody = JsonConvert.SerializeObject(marketingContactDetails); Response response = await _sendGridClient.RequestAsync(SendGridClient.Method.PUT, requestBody, null, "marketing/contacts").ConfigureAwait(false); if (response != null && response.StatusCode == HttpStatusCode.Accepted) { return(true); } else { return(false); } }
private async Task <string> GetTemplateId(string templateName) { var queryParams = @"{ 'generations': 'dynamic' }"; Response response = await _sendGridClient.RequestAsync(SendGridClient.Method.GET, null, queryParams, "templates"); if (response != null && response.StatusCode == HttpStatusCode.OK) { string body = response.Body.ReadAsStringAsync().Result; var templates = JsonConvert.DeserializeObject <Templates>(body); if (templates != null && templates.templates.Length > 0) { var template = templates.templates.Where(x => x.name == templateName).FirstOrDefault(); if (template != null) { return(template.id); } else { throw new UnknownTemplateException($"{templateName} cannot be found in templates"); } } else { throw new UnknownTemplateException("No templates found"); } } else { throw new SendGridException(); } }
/// <summary> /// Create a new API key for the scopes contained in the <paramref name="permissions"/>. /// </summary> /// <param name="client">The SendGrid client.</param> /// <param name="permissions">The permissions builder.</param> /// <param name="name">The API key name.</param> /// <returns>The <see cref="Response"/> from the SendGrid API call.</returns> public static async Task <Response> CreateApiKey(this ISendGridClient client, SendGridPermissionsBuilder permissions, string name) { var scopes = permissions.Build(); var payload = new { name, scopes }; var data = JsonConvert.SerializeObject(payload); var response = await client.RequestAsync(method : SendGridClient.Method.POST, urlPath : "api_keys", requestBody : data); return(response); }
/// <summary> /// Create a permissions builder instance that masks the emitted scopes to exclude any scopes not /// contained in the list of scopes already granted for the given API Key the <paramref name="client"/> was initialized with. /// </summary> /// <param name="client">The SendGrid client.</param> /// <returns>A <see cref="SendGridPermissionsBuilder"/> instance.</returns> public static async Task <SendGridPermissionsBuilder> CreateMaskedPermissionsBuilderForClient(this ISendGridClient client) { var response = await client.RequestAsync(method : SendGridClient.Method.GET, urlPath : "scopes"); var body = await response.DeserializeResponseBodyAsync(); var userScopesJArray = (body["scopes"] as JArray); var includedScopes = userScopesJArray.Values <string>().ToArray(); var builder = new SendGridPermissionsBuilder(); builder.Exclude(scope => !includedScopes.Contains(scope)); return(builder); }