public ActiveCampaignRequest getRequestData(CampaignDocument campaign, List <CampaignSettingDocument> settings) { ActiveCampaignRequest request = FillSendinBlueRequestFromCosmos(settings); request.Name = campaign.Name; request.Text = campaign.Text; return(request); }
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()); }
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); }
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); }