Exemple #1
0
        public ActiveCampaignRequest getRequestData(CampaignDocument campaign, List <CampaignSettingDocument> settings)
        {
            ActiveCampaignRequest request = FillSendinBlueRequestFromCosmos(settings);

            request.Name = campaign.Name;
            request.Text = campaign.Text;
            return(request);
        }
Exemple #2
0
        public ActiveCampaignRequest FillSendinBlueRequestFromCosmos(List <CampaignSettingDocument> campaignSettings)
        {
            ActiveCampaignRequest request = new ActiveCampaignRequest();

            //todo
            try
            {
                // from products
                if (this.settings.Count > 0)
                {
                    foreach (var item in settings)
                    {
                        switch (item.Name)
                        {
                        case "activeCampaignApiToken":
                        {
                            request.ApiKey = item.Name.Equals("activeCampaignApiToken") ? item.Value : string.Empty;
                        }
                        break;

                        case "activeCampaignList":
                        {
                            request.ListId = item.Name.Equals("activeCampaignList") ? item.Value : string.Empty;
                        }
                        break;

                        case "activeCampaignUrl":
                        {
                            request.Url = item.Name.Equals("activeCampaignUrl") ? item.Value : string.Empty;
                        }
                        break;
                        }
                    }
                }

                // from campaigns
                if (campaignSettings.Count > 0)
                {
                    foreach (var setting in campaignSettings)
                    {
                        switch (setting.Name)
                        {
                        case "activeCampaignSubject":
                        {
                            request.Subject = setting.Name.Equals("activeCampaignSubject") ? setting.Value : string.Empty;
                        }
                        break;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                string exceptionMessage = telemetria.MakeMessageException(e, System.Reflection.MethodBase.GetCurrentMethod().Name);
                telemetria.Critical(exceptionMessage);
            }
            return(request);
        }
        protected TResult ExecuteGetRequest <TResult>(string action, ActiveCampaignRequest requestData)
        {
            var queryParameters = GetQueryString(action, requestData);

            var urlAction = $"{baseAddress}&{queryParameters}";

            var client = connection.WebClient;

            var json = client.DownloadString(urlAction);

            var result = GetResult <TResult>(action, json);

            return(result);
        }
        protected TResult ExecutePostRequest <TResult>(string action, ActiveCampaignRequest request) where TResult : ActiveCampaignResponse
        {
            var urlAction = baseAddress;

            SetRequestQueryValues(action, request);

            var requestData = request.GetNamedValueCollection();

            var client = connection.WebClient;

            var byteResult = client.UploadValues(urlAction, requestData);

            var json = Encoding.Default.GetString(byteResult);

            var result = GetResult <TResult>(action, json);

            return(result);
        }
 private void SetRequestQueryValues(string action, ActiveCampaignRequest request)
 {
     request.ApiKey    = connection.ApiKey;
     request.ApiAction = action;
     request.ApiOutput = "json";
 }
        private string GetQueryString(string action, ActiveCampaignRequest request)
        {
            SetRequestQueryValues(action, request);

            return(request.ToQueryString().ToLower());
        }
Exemple #7
0
        public static NameValueCollection GetNamedValueCollection(this ActiveCampaignRequest request)
        {
            const string PValuePropertyName = "PValues";

            const string FilterFieldPropertyName = "FilterField";

            const string FilterValuePropertyName = "FilterValues";

            const string FieldsPropertyName = "Fields";

            var formFields = new NameValueCollection();

            var properties = request
                             .GetType()
                             .GetProperties()
                             .ToList();

            properties
            .Where(p => p.Name != FilterFieldPropertyName)
            .ToList()
            .ForEach(
                pi =>
            {
                var propertyValue = pi.GetValue(request, null);

                if (propertyValue == null)
                {
                    return;
                }

                var propertyName = pi.Name;

                if (propertyName == PValuePropertyName)
                {
                    propertyName = $"p[{propertyValue}]";
                }

                if (propertyName == FilterValuePropertyName)
                {
                    var filterField = properties.Single(p => p.Name == FilterFieldPropertyName).GetValue(request, null);

                    propertyName = $"filters[{filterField}]";
                }

                if (propertyName == FieldsPropertyName)
                {
                    var fieldsValues = (IDictionary <string, string>)properties.Single(p => p.Name == FieldsPropertyName).GetValue(request, null);

                    foreach (var field in fieldsValues)
                    {
                        var fieldName = $"field[%{field.Key}%, 0]";

                        var fieldValue = field.Value;

                        formFields.Add(fieldName, fieldValue);
                    }

                    return;
                }

                propertyName = propertyName.CamelCaseToUnderscore();

                if (pi.PropertyType.IsArray)
                {
                    foreach (var value in (IEnumerable)propertyValue)
                    {
                        formFields.Add(propertyName, value.ToString());
                    }

                    return;
                }

                formFields.Add(propertyName, propertyValue.ToString());
            });

            return(formFields);
        }
Exemple #8
0
        public string SendCampaign(ActiveCampaignRequest request)
        {
            string Id = string.Empty;

            try
            {
                ActiveCampaignClient        activeCampaignClient = new ActiveCampaignClient(request.ApiKey, request.Url);
                Dictionary <string, string> parameters           = new Dictionary <string, string>()
                {
                };

                var     result = activeCampaignClient.ApiAsync("account_view", parameters);
                dynamic data   = JsonConvert.DeserializeObject(result.Data);
                request.FromEmail = data.email;
                request.FromName  = data.fname;

                activeCampaignClient = new ActiveCampaignClient(request.ApiKey, request.Url);
                parameters           = new Dictionary <string, string>
                {
                    { "format", "mime" },
                    { "subject", request.Subject },
                    { "fromemail", request.FromEmail },
                    { "fromname", request.FromName },
                    { "reply2", "" },
                    { "priority", "5" },
                    { "charset", "utf-8" },
                    { "encoding", "quoted-printable" },
                    { "htmlconstructor", "editor" },
                    { "html", request.Text },
                    { "textconstructor", "editor" },
                    { "p[" + request.ListId + "]", request.ListId }
                };
                result = activeCampaignClient.ApiAsync("message_add", parameters);
                data   = JsonConvert.DeserializeObject(result.Data);
                string idMessage = data.id;

                activeCampaignClient = new ActiveCampaignClient(request.ApiKey, request.Url);
                parameters           = new Dictionary <string, string>
                {
                    { "type", "text" },
                    { "segmentid", "0" },
                    { "bounceid", "-1" },
                    { "name", request.Name },
                    { "sdate", DateTime.Now.ToString() },
                    { "status", "1" },
                    { "public", "1" },
                    { "mailer_log_file", "4" },
                    { "tracklinks", "all" },
                    { "tracklinksanalytics", "" },
                    { "trackreads", "0" },
                    { "trackreplies", "0" },
                    { "htmlunsub", "1" },
                    { "textunsub", "1" },
                    { "p[" + request.ListId + "]", request.ListId },
                    { "m[" + idMessage + "]", "100" }
                };
                result = activeCampaignClient.ApiAsync("campaign_create", parameters);
                data   = JsonConvert.DeserializeObject(result.Data);
                Id     = data.id;

                Id = Convert.ToBoolean(result.Code) ? data.id : null;
            }
            catch (Exception ex)
            {
                var messageException = telemetria.MakeMessageException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
                telemetria.Critical(messageException);
            }
            return(Id);
        }