コード例 #1
0
ファイル: UbiquityEngage.cs プロジェクト: cmcd74/SavvyCMS
        public void UpdateLastLoginDate(Guid referenceID)
        {
            string url = "/database/contacts/" + referenceID;

            var collection = new WebHeaderCollection();

            collection.Add("Authorization", string.Format("Engage {0}", APIToken));

            var obj = new {
                ReferenceID = referenceID,
                Data        = new object[] {
                    new {
                        FieldID = GetFieldID("Tradesmart Last Logged In Date"),
                        Name    = "Tradesmart Last Logged In Date",
                        Value   = DateTime.Now.FmtDate()
                    }
                },
                ItemXml    = (string)null,
                Source     = (string)null,
                FormAction = (string)null
            };

            try {
                var result = Http.Request(Http.PUT, "https://api.ubiquity.co.nz" + url, new JsonSerializer().Serialize(obj), collection);
            } catch (Exception ex) {  }
        }
コード例 #2
0
ファイル: UbiquityEngage.cs プロジェクト: cmcd74/SavvyCMS
        public bool ReferenceIDIsValid(string refID)
        {
            const string apiBaseUrl = "https://api.ubiquity.co.nz";
            var          url        = string.Format("{0}/database/contacts/{1}?format=json&apiToken={2}", apiBaseUrl, refID, APIToken);

            try {
                Http.Get(url);
                return(true);
            } catch {
                // Will throw an exception when the refID couldn't be found
            }

            return(false);
        }
コード例 #3
0
ファイル: UbiquityEngage.cs プロジェクト: cmcd74/SavvyCMS
        public dynamic GetPersonByEmail(string email)
        {
            //Build a new Base Rest Client
            APIToken = Util.GetNamedSetting("EngageAPIToken");
            var collection = new WebHeaderCollection();

            collection.Add("Authorization", string.Format("Engage {0}", APIToken));
            string filterString = "{\"filterString\": \"[" + GetFieldID("Email") + "] eq '" + email + "'\"}";
            var    content      = Http.Post("https://api.ubiquity.co.nz/database/contacts/query/", filterString, "Authorization", string.Format("Engage {0}", APIToken));

            var     json = content;
            dynamic obj  = JsonHelper.Parse(json);

            return(obj.totalReturned > 0 ? obj.selectedContacts[0] : null);
        }
コード例 #4
0
ファイル: UbiquityEngage.cs プロジェクト: cmcd74/SavvyCMS
        public void Unsubscribe(string refID)
        {
            //get member ref
            string url = "/database/contacts/" + refID;

            var collection = new WebHeaderCollection();

            collection.Add("Authorization", string.Format("Engage {0}", APIToken));
            var obj = new {
                ReferenceID = refID,
                Data        = new object[] {
                    new {
                        FieldID = GetFieldID("Opted Out"),
                        Name    = "Opted Out",
                        Value   = "true"
                    },
                    new {
                        FieldID = GetFieldID("Email Permission"),
                        Name    = "Email Permission",
                        Value   = "false"
                    }
                },
                ItemXml    = (string)null,
                Source     = (string)null,
                FormAction = (string)null
            };

            try {
                var response = Http.Request(Http.PUT, "https://api.ubiquity.co.nz" + url, new JsonSerializer().Serialize(obj), collection);
            } catch (Exception e) {
                var email = new ElectronicMail();
                email.Subject = "Engage Error - Unsubscribing member " + refID;
                string body = "";
                body             += @"
	ReferenceID: "     + refID + @"
	Action Taken: Unsubscribing"     + @"
	Errors as follows: "     + e.Message + @"
	Data:
	"     + new JsonSerializer().Serialize(obj);
                email.BodyPlain   = body;
                email.ToAddress   = "*****@*****.**";
                email.FromAddress = SendEMail.EmailFromAddress;
                email.FromName    = SendEMail.EmailFromName;
                email.Send(false);
            }
        }
コード例 #5
0
ファイル: UbiquityEngage.cs プロジェクト: cmcd74/SavvyCMS
        public List <dynamic> GetEngageContacts()
        {
            var engageContacts = new List <dynamic>();

            const string apiBaseUrl = "https://api.ubiquity.co.nz";
            var          url        = string.Format("{0}/database/contacts?format=json&apiToken={1}", apiBaseUrl, APIToken);
            var          json       = Http.Get(url);

            dynamic obj = JsonHelper.Parse(json);

            // Load all contacts from Engage
            while (obj.totalReturned > 0)
            {
                foreach (var selectedContact in obj.selectedContacts)
                {
                    engageContacts.Add(selectedContact);
                }
                json = Http.Get(url + "&skip=" + obj.next);
                obj  = JsonHelper.Parse(json);
            }

            return(engageContacts);
        }
コード例 #6
0
ファイル: UbiquityEngage.cs プロジェクト: cmcd74/SavvyCMS
        public dynamic GetEngageModifiedContacts(DateTime since, int limit)
        {
            var engageContacts = new List <dynamic>();

            //Build a new Base Rest Client
            var collection = new WebHeaderCollection();

            collection.Add("Authorization", string.Format("Engage {0}", APIToken));
            const string url = "https://api.ubiquity.co.nz/database/contacts/query/";

            var    numberOfRecords = Math.Min(limit, 150);
            string filterString    = "{{\"filterString\": \"[" + GetFieldID("Last Modified") + "] ge '" + Fmt.DateTime(since, Fmt.DateTimePrecision.Second) + "'\", \"sortFields\": [{{ \"column\": \"" + GetFieldID("Last Modified") + "\", \"direction\": \"Ascending\"}}], \"numberOfRecords\": " + numberOfRecords + ", \"startRecord\": {0}}}";
            var    obj             = JsonHelper.Parse("{\"next\": 0}");

            do
            {
                var content = Http.Post(url, string.Format(filterString, obj.next), "Authorization", string.Format("Engage {0}", APIToken));
                obj = JsonHelper.Parse(content);

                if (obj.selectedContacts.Length == 0)
                {
                    break;
                }

                foreach (var selectedContact in obj.selectedContacts)
                {
                    engageContacts.Add(selectedContact);
                    if (engageContacts.Count >= limit)
                    {
                        break;
                    }
                }
            } while (obj.next < obj.totalContacts && engageContacts.Count < limit);

            return(engageContacts);
        }