/// <summary>
        /// Create a new list
        /// <param name="listName">The name of the list </param>
        /// <param name="contactForCampaignFotter">Contact information displayed in campaign footers to comply with international spam laws</param>
        /// <param name="permissionReminderText">The permission reminder for the list</param>
        /// <param name="defaultValue">Default values for campaigns created for this list</param>
        /// <param name="emailTypeOption">Whether the list supports multiple formats for emails.</param>
        /// <param name="listVisibility">Whether this list is public or private</param>
        /// </summary>
        internal async Task<dynamic> CreateListAsync(string listName, Contact contactForCampaignFotter, 
            string permissionReminderText, CampaignDefaults defaultValue, bool emailTypeOption=false,
            ListVisibility listVisibility = ListVisibility.pub)
        {
            string endpoint = Authenticate.EndPoint(TargetTypes.lists, SubTargetType.not_applicable, SubTargetType.not_applicable);

            MCLists mcListObject = new MCLists()
            {
                name= listName.ToString(),
                contact = contactForCampaignFotter,
                permission_reminder = permissionReminderText.ToString(),
                campaign_defaults =  defaultValue,
                email_type_option = emailTypeOption,
                visibility = listVisibility.ToString()
            };

            return await BaseOperation.PostAsync<MCLists>(endpoint, mcListObject);
        }
 /// <summary>
 /// Update a list
 /// <param name="list_id">Unique id for the list</param> 
 /// <param name="listName">The name of the list </param>
 /// <param name="contactForCampaignFotter">Contact information displayed in campaign footers to comply with international spam laws</param>
 /// <param name="permissionReminderText">The permission reminder for the list</param>
 /// <param name="defaultValue">Default values for campaigns created for this list</param>
 /// <param name="emailTypeOption">Whether the list supports multiple formats for emails.</param>
 /// <param name="listVisibility">Whether this list is public or private</param>
 /// </summary>
 public async Task<dynamic> UpdateList(string list_id, string listName, Contact contactForCampaignFotter,
                                       string permissionReminderText, CampaignDefaults defaultValue,
                                       bool emailTypeOption = false,
                                       ListVisibility listVisibility = ListVisibility.pub)
 {
   return await listOverview.UpdateList(list_id, listName, contactForCampaignFotter, permissionReminderText, defaultValue, emailTypeOption, listVisibility);
 }
        /// <summary>
        /// Update a list
        /// <param name="list_id">Unique id for the list</param> 
        /// <param name="listName">The name of the list </param>
        /// <param name="contactForCampaignFotter">Contact information displayed in campaign footers to comply with international spam laws</param>
        /// <param name="permissionReminderText">The permission reminder for the list</param>
        /// <param name="defaultValue">Default values for campaigns created for this list</param>
        /// <param name="emailTypeOption">Whether the list supports multiple formats for emails.</param>
        /// <param name="listVisibility">Whether this list is public or private</param>
        /// </summary>
        internal async Task<dynamic> UpdateList(string list_id, string listName, Contact contactForCampaignFotter, 
            string permissionReminderText, CampaignDefaults defaultValue, bool emailTypeOption=false,
            ListVisibility listVisibility = ListVisibility.pub)
        {
            if (list_id == null)
              throw (new Exception("List ID must not be null"));

            MCLists list = new MCLists
            {
              name = listName,
              contact = contactForCampaignFotter,
              permission_reminder = permissionReminderText,
              campaign_defaults = defaultValue,
              email_type_option = emailTypeOption,
              visibility = listVisibility.ToString(),
              id = list_id
            };

          string endpoint = Authenticate.EndPoint(TargetTypes.lists, SubTargetType.not_applicable, SubTargetType.not_applicable, list_id, list_id);

          return await BaseOperation.PatchAsync<MCLists>(endpoint, list);
        }
Пример #4
0
        static void Main(string[] args)
        {
            MailChimpReports reports = new MailChimpReports();

            try
            {
                //var x = reports.getoverviewbycampaignasync("3709ea682b").result;
                //var x2 = reports.getoverviewbycampaignasync("e6e1eb2be8").result;
                //var x3 = reports.getadviceasync("e6e1eb2be8").result;
                //var x4 = reports.getclickdetailsasync("e6e1eb2be8").result;
                //var x5 = reports.getclickdetailbylinkidasync("e6e1eb2be8", "6defea2fac").result;
                //var x6 = reports.getalllsubscribersinfoasync("e6e1eb2be8", "6defea2fac").result;

                ////subscriber_hash= the md5 hash of the lowercase version of the list member’s email address
                //// var x7 =reports.getspecificsubscriberinfoasync("e6e1eb2be8", "e6e1eb2be8", string subscriber_hash);
                //var x8 = reports.getdomainperformanceasync("e6e1eb2be8").result;
                //var x9 = reports.geteepurlactivityasync("e6e1eb2be8").result;
                //var x10 = reports.getemailactivityasync("e6e1eb2be8").result;
                //// var x11 = reports.getemailactivitybysubscriberasync("e6e1eb2be8",);
                //var x12 = reports.gettoplocationasync("e6e1eb2be8").result;
                //var x13 = reports.getrecipientsinfoasync("e6e1eb2be8").result;
                ////   var x14= reports.getspecificcampaignrecipientasync("e6e1eb2be8");
                //var x15 = reports.getreportforchildcampaignasync("e6e1eb2be8").result;
                //var x16 = reports.getunsubscriberlistasync("e6e1eb2be8").result;
                //  var x17 =getunsubscriberinfoasync("e6e1eb2be8", string subscriber_hash)

                //var k = reports.getoverviewasync().result;
                //var clickdetails = reports.getclickdetailsasync("3709ea682b").result;

                //var x = reports.getoverviewbycampaignasync("3709ea682b").result;
                //var performance = x.timeseries;
                //List<Timesery> listOfPerfmance = performance.ToList<Timesery>();
                //var templates = new MailChimpTemplates();

                //var z = reports.GetOverviewByCampaignAsync("3709ea682b").Result;

                //  var f = templates.GetTemplatesAsync().Result;

                //var k = templates.DeleteATemplateAsync("18085").Result;
                //var kk = templates.GetSpecificTemplateAsync("18085").Result;

                #region CampaignCreation
                //MailChimpCampaigns campaign = new MailChimpCampaigns();
                //MCCampaignsOverview overview = new MCCampaignsOverview();

                //Recipients recipients = new Recipients()
                //{
                //    list_id = "0a84a63afc"
                //};

                //Settings campaignSettings = new Settings()
                //{
                //    subject_line = "Schedule Mail Subject ",
                //    title = "Schedule Mail!!! ",
                //    from_name = "Shahriar Hossain",
                //    reply_to = "*****@*****.**",
                //    template_id = 18073,
                //    authenticate = true,
                //    auto_footer = false
                //};
                //Tracking campaignTracking = new Tracking()
                //{
                //    opens = true,
                //    html_clicks = true,
                //    text_clicks = true
                //};

                //ResultWrapper<Campaign> campaignCreationResult = overview.CreateCampaignAsync(Enum.CampaignType.regular, recipients, campaignSettings, campaignTracking).Result;

                //if (campaignCreationResult.HasError == false)
                //{
                //    ContentTemplate template = new ContentTemplate()
                //    {
                //        id = "18073"
                //    };

                //    ContentSetting cSetting = new ContentSetting();
                //    string path = @"C:\Users\Wahid\Documents\Visual Studio 2012\Projects\MailChimp.Api.Net\MailChimp.Api.Net\EmailTemplates\raw_email_01.txt";
                //    FileParser parser = new FileParser();
                //    cSetting.html = parser.EmailParser(path);

                //    MCCampaignContent campaignContent = new MCCampaignContent();
                //    var setContentStatus = campaignContent.SetCampaignContentAsync(campaignCreationResult.Result.id, cSetting).Result;

                //    MCCampaignsCheckList mccheckList = new MCCampaignsCheckList();
                //    var checkListResult = mccheckList.GetCampaignContentAsync(campaignCreationResult.Result.id).Result;

                //    if (checkListResult.is_ready)
                //    {
                //        var sendStatus = overview.SendCampaignAsync(campaignCreationResult.Result.id).Result;
                //    }
                //}
                //else
                //{
                //    String.Format("Best of Luck :p !");
                //}
                #endregion CampaignCreation

                #region Add single people to a List
                //MailChimpList lists = new MailChimpList();
                //MCMember member = new MCMember()
                //{
                //    email_address = String.Format("*****@*****.**"),
                //    email_type = "html",
                //    language = "English",
                //    status = SubscriberStatus.subscribed.ToString()
                //};
                //var x = lists.AddMember(member, "0a84a63afc").Result;
                #endregion Add people to List

                #region Add multiple members in list with single call
                //RootBatch batchObj = new RootBatch();
                //MCMember member = new MCMember();
                //for (int i = 828; i < 833; i++)
                //{
                //    member.email_address = String.Format("Rifat{0}@test.com", i);
                //    member.email_type = "html";
                //    member.language = "English";
                //    member.status = SubscriberStatus.subscribed.ToString();

                //    var settings = new JsonSerializerSettings
                //    {
                //        NullValueHandling = NullValueHandling.Ignore,

                //        Converters = new List<JsonConverter> 
                //        { 
                //            new IsoDateTimeConverter()
                //            {
                //                DateTimeFormat= "yyyy-MM-dd HH:mm:ss"
                //            }
                //        }
                //    };

                //    var myContentJson = JsonConvert.SerializeObject(member, settings);

                //    SingleOperation singleOpt = new SingleOperation();
                //    singleOpt.method = "POST";
                //    singleOpt.path = String.Format("/{0}/{1}/{2}", TargetTypes.lists, "0a84a63afc", SubTargetType.members);
                //    singleOpt.operation_id = String.Format("{0}", i);
                //    singleOpt.body = myContentJson;

                //    batchObj.operations.Add(singleOpt);
                //}

                //MailChimpBatch goBatch = new MailChimpBatch();
                //var batchResult = goBatch.PostBatchOperationAsync(batchObj).Result;
                //Thread.Sleep(9000);
                #endregion Add multiple members in list with single call

                #region Get Batch Result for By ID
                //var batchId = batchResult.Result.id;
                //string newFileName = "";
                //if (batchId != null)
                //{
                //    var result = goBatch.GetBatchReportById(batchId).Result;
                //    Thread.Sleep(2000);

                //    if (result.errored_operations > 0)
                //    {
                //        string detailsReportForIssueTrackingURL = result.response_body_url.ToString();
                //        newFileName = @"E:\" + batchId + ".tar.gz";
                //        FileDownloader.download(detailsReportForIssueTrackingURL, newFileName);
                //    }
                //    else
                //    {
                //        string detailSuccessReportURL = result.response_body_url.ToString();
                //    }
                //}
                #endregion Get Batch Result for By ID

                #region decompress tar.gz
              //string logDirectory = @"E:\MailChimpLog";
              //string extractedFileName = "";
              //if (!String.IsNullOrWhiteSpace(newFileName))
              //{
              //  while (true)
              //  {
              //    if (File.Exists(newFileName))
              //    {
              //      using (Stream stream = File.OpenRead(newFileName))
              //      {
              //        var reader = ReaderFactory.Open(stream);
              //        while (reader.MoveToNextEntry())
              //        {
              //          if (!reader.Entry.IsDirectory)
              //          {
              //            extractedFileName = reader.Entry.Key;
              //            extractedFileName = extractedFileName.Substring(2);
              //            reader.WriteEntryToDirectory(logDirectory, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
              //          }
              //        }
              //      }
              //      string expectedFileName = String.Format("{0}.json", batchId);

              //      System.IO.File.Move(
              //          Path.Combine(logDirectory, extractedFileName),
              //          Path.Combine(logDirectory, expectedFileName));
              //      break;
              //    }
              //  }
              //}
                #endregion decompress tar.gz
              
                #region CreateNewList
                MailChimpList myList = new MailChimpList();
                Contact ct = new Contact()
                {
                  city = "Dhaka",
                  address1 = "This is address1",
                  address2 = "This is address2",
                  company = "desme",
                  country = "Bangladesh",
                  phone = "017777",
                  state = "NA",
                  zip = "96000"
                };

                CampaignDefaults cd = new CampaignDefaults()
                {
                  from_email = "*****@*****.**",
                  from_name = "Shahriar",
                  language = "English",
                  subject = "This is a subject"
                };

                Random r = new Random();
                var listResult = myList.CreateListAsync("myTmpList#" + r.Next(0, 100), ct, "You gave me permission ", cd, false, ListVisibility.prv).Result;
              
                #region Create Merge Field              
                Thread.Sleep(2000);

                MergeField mergeField = new MergeField
                {
                  name = "Company",
                  tag = "CNAME",
                  type = MergeFieldType.text,
                  default_value = "",
                  list_id = listResult.Result.id
                };

                var mergeFieldResult = myList.AddMergeField(mergeField, listResult.Result.id).Result;

                MergeField mergeFieldUpdate = new MergeField
                {
                  name = "Company Name",
                  tag = "CNAME",
                  type = MergeFieldType.text,
                  default_value = "",
                  list_id = listResult.Result.id,
                  merge_id = mergeFieldResult.Result.merge_id,
                  display_order = 3,
                  help_text = "Company Name",
                  @public = true
                };

                var mergeFieldUpdateResult = myList.UpdateMergeField(mergeFieldUpdate, listResult.Result.id);

                if (mergeFieldUpdateResult != null)
                {

                }

                MCMember member = new MCMember()
                {
                    email_address = String.Format("*****@*****.**"),
                    email_type = "html",
                    language = "English",
                    status = SubscriberStatus.subscribed.ToString(),
                    merge_fields = new Dictionary<string, object>
                      {
                        {"FNAME", "first"},
                        {"LNAME", "last"},
                        {"CNAME", "company"}
                      }
                };
                var memberAddResult = myList.AddMember(member, listResult.Result.id).Result;

                if (!memberAddResult.HasError)
                {
                  MCMember updateMember = new MCMember()
                  {
                    email_address = String.Format("*****@*****.**"),
                    email_type = "html",
                    language = "English",
                    status = SubscriberStatus.subscribed.ToString(),
                    id = memberAddResult.Result.id,
                    merge_fields = new Dictionary<string, object>
                      {
                        {"FNAME", "FIRST"},
                        {"LNAME", "LAST"},
                        {"CNAME", "Company Name"}
                      }
                  };
                  var memberUpdateResult = myList.UpdateMember(updateMember, listResult.Result.id).Result;

                  if (!memberUpdateResult.HasError)
                  {

                  }
                }

                #endregion

                #endregion CreateNewList

                #region CampaignScheduler
                //MailChimpCampaigns campaign = new MailChimpCampaigns();
                //MCCampaignsOverview overview = new MCCampaignsOverview();

                //Recipients recipients = new Recipients()
                //{
                //    list_id = "0a84a63afc"
                //};

                //Settings campaignSettings = new Settings()
                //{
                //    subject_line = "Schedule Mail Subject ",
                //    title = "Schedule Mail!!! ",
                //    from_name = "Shahriar Hossain",
                //    reply_to = "*****@*****.**",
                //    template_id = 18073,
                //    authenticate = true,
                //    auto_footer = false
                //};
                //Tracking campaignTracking = new Tracking()
                //{
                //    opens = true,
                //    html_clicks = true,
                //    text_clicks = true
                //};

                //ResultWrapper<Campaign> campaignCreationResult = overview.CreateCampaignAsync(Enum.CampaignType.regular, recipients, campaignSettings, campaignTracking).Result;

                //if (campaignCreationResult.HasError == false)
                //{
                //    ContentTemplate template = new ContentTemplate()
                //    {
                //        id = "18073"
                //    };

                //    ContentSetting cSetting = new ContentSetting();
                //    string path = @"C:\Users\Wahid\Documents\Visual Studio 2012\Projects\MailChimp.Api.Net\MailChimp.Api.Net\EmailTemplates\raw_email_01.txt";
                //    FileParser parser = new FileParser();
                //    cSetting.html = parser.EmailParser(path);

                //    MCCampaignContent campaignContent = new MCCampaignContent();
                //    var setContentStatus = campaignContent.SetCampaignContentAsync(campaignCreationResult.Result.id, cSetting).Result;

                //    MCCampaignsCheckList mccheckList = new MCCampaignsCheckList();
                //    var checkListResult = mccheckList.GetCampaignContentAsync(campaignCreationResult.Result.id).Result;

                //    if (checkListResult.is_ready)
                //    {
                //        DateTime dt = new DateTime(2016, 01, 29, 10, 28, 00, DateTimeKind.Utc);

                //        var schedule = campaign.ScheduleCampaignAsync(campaignCreationResult.Result.id, dt).Result;
                //    }
                //}
                //else
                //{
                //    String.Format("Best of Luck :p !");
                //}

                #endregion CampaignScheduler

                Console.Read();
            }
            catch (Exception ex)
            {

                throw ex;
            }



            Console.Read();
        }