Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }