コード例 #1
0
        public string GetGroups()
        {
            // ----- Get Groups -----
            Groups = new List <cGroups>();
            string MyContactID = "";

            Feed <Google.Contacts.Group> fg = cr.GetGroups();

            foreach (Google.Contacts.Group group in fg.Entries)
            {
                cGroups gItem = new cGroups();
                gItem.ID     = group.Id;
                gItem.Name   = group.Title;
                gItem.System = false;
                if (!string.IsNullOrEmpty(group.SystemGroup))
                {
                    gItem.Name   = group.SystemGroup;
                    gItem.System = true;
                    if (gItem.Name == "Contacts")
                    {
                        MyContactID = gItem.ID;
                    }
                }
                Groups.Add(gItem);
            }
            return(MyContactID);
        }
コード例 #2
0
        public List <Group> GetAll()
        {
            var request = new ContactsRequest(_settings);
            var groups  = request.GetGroups().Entries;

            return(groups.Select(ParseGroup).ToList());
        }
コード例 #3
0
        /////////////////////////////////////////////////////////////////////////////


        /////////////////////////////////////////////////////////////////////
        /// <summary>runs an basic auth test against the groups feed test</summary>
        //////////////////////////////////////////////////////////////////////
        [Test] public void GroupsModelTest()
        {
            Tracing.TraceMsg("Entering GroupsModelTest");


            RequestSettings rs = new RequestSettings(this.ApplicationName, this.userName, this.passWord);

            rs.AutoPaging = true;
            ContactsRequest cr = new ContactsRequest(rs);

            Feed <Group> fg = cr.GetGroups();

            Group newGroup = new Group();

            newGroup.Title = "Private Data";

            Group insertedGroup = cr.Insert(fg, newGroup);

            Group g2 = new Group();

            g2.Title = "Another private Group";

            Group insertedGroup2 = cr.Insert(fg, g2);

            // now insert a new contact that belongs to that group
            Feed <Contact> fc = cr.GetContacts();
            Contact        c  = new Contact();

            c.AtomEntry = ObjectModelHelper.CreateContactEntry(1);

            GroupMembership member = new GroupMembership();

            member.HRef = insertedGroup.Id;


            GroupMembership member2 = new GroupMembership();

            member2.HRef = insertedGroup2.Id;

            Contact insertedEntry = cr.Insert(fc, c);

            // now change the group membership
            insertedEntry.GroupMembership.Add(member);
            insertedEntry.GroupMembership.Add(member2);
            Contact currentEntry = cr.Update(insertedEntry);

            Assert.IsTrue(currentEntry.GroupMembership.Count == 2, "The entry should be in 2 groups");

            currentEntry.GroupMembership.Clear();
            currentEntry = cr.Update(currentEntry);
            Assert.IsTrue(currentEntry.GroupMembership.Count == 0, "The entry should not be in a group");

            cr.Delete(currentEntry);
            cr.Delete(insertedGroup);
            cr.Delete(insertedGroup2);
        }
コード例 #4
0
        /// <summary>
        /// Gets the Google Groups.
        /// </summary>
        /// <returns>The Groups.</returns>
        public IEnumerable <Group> GetGroups()
        {
            var response = ContactsRequest.GetGroups();

            if (response != null)
            {
                return(response.Entries.AsEnumerable());
            }

            return(new List <Group>());
        }
コード例 #5
0
        public void TestContactFeed()
        {
            Contact contact = new Contact();
            //RequestSettings settings = new RequestSettings("Google contacts tutorial", parameters);
            RequestSettings settings = new RequestSettings("Google contacts tutorial");
            ContactsRequest cr       = new ContactsRequest(settings);

            Feed <Contact> feed = cr.GetContacts();

            foreach (Contact c in feed.Entries)
            {
                //Console.WriteLine(c.Name.FullName);
            }

            //Feed<Document> feed = r.GetDocuments();
            Feed <Group> fg = cr.GetGroups();
        }
コード例 #6
0
        /// <summary>
        /// OAUTH2 login
        /// </summary>
        /// <param name="user">User name</param>
        /// <returns></returns>
        public bool Login(ref string user)
        {
            if (user == "")
            {
                user = "******";
            }
            cr = GetContactRequest(user);

            try
            {
                Feed <Google.Contacts.Group> fg = cr.GetGroups();
                int x = fg.PageSize;
            }
            catch (Exception Err)
            {
                user = RandomString(10);
                cr   = GetContactRequest(user);
            }

            return(true);
        }
コード例 #7
0
        public static GoogleContactsManager CreateContactsManager()
        {
            var settings = new RequestSettings("Maintain Work Contacts",
                                               Settings.Default.EmailAddressUsername,
                                               Utility.ToInsecureString(Utility.DecryptString(Settings.Default.EmailAddressPassword)));
            settings.AutoPaging = true;
            var request = new ContactsRequest(settings);

            IEnumerable<Group> groups;
            try
            {
                groups = request.GetGroups().Entries;

                string groupName = Settings.Default.GoogleWorkGroupName;
                var workGroup = groups.Where(g => g.Title.Contains(groupName)).FirstOrDefault();
                if (workGroup == null)
                {
                    throw new ArgumentNullException("WorkGroup", "There is no group called " + groupName + " in the Google account.");
                }

                var myContactsGroup = groups.Where(g => g.Title.Contains("My Contacts")).FirstOrDefault();
                if (myContactsGroup == null)
                {
                    throw new ArgumentNullException("MyContactsGroup", "There is no group called My Contacts in the Google account.");
                }

                GoogleContactsManager contactsManager = new GoogleContactsManager();
                contactsManager.Request = request;
                contactsManager.MyContactsGroup = myContactsGroup;
                contactsManager.WorkGroup = workGroup;
                return contactsManager;
            }
            catch (GDataRequestException exception)
            {
                throw new InvalidCredentialsException("Invalid username and password were provided.", exception);
            }
        }
コード例 #8
0
        static void FillGroups(UserCredential creds)
        {
            RefreshToken(creds, out bool success);
            if (!success)
            {
                return;
            }

            ContactsRequest cr = BuildContactsRequest(creds);

            try
            {
                Feed <Group> fg = cr.GetGroups();
                fg.AutoPaging = true;

                foreach (Group group in fg.Entries)
                {
                    if (group.Title == Constants.GroupName)
                    {
                        groupId = group.Id;
                    }
                    if (group.Title == "System Group: My Contacts")
                    {
                        defaultGroupId = group.Id;
                    }
                    if (!string.IsNullOrEmpty(groupId) && !string.IsNullOrEmpty(defaultGroupId))
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Could not get groups from Google");
            }
        }
コード例 #9
0
        /////////////////////////////////////////////////////////////////////////////
 

        /////////////////////////////////////////////////////////////////////
        /// <summary>runs an basic auth test against the groups feed test</summary> 
        //////////////////////////////////////////////////////////////////////
        [Test] public void GroupsModelTest()
        {
            Tracing.TraceMsg("Entering GroupsModelTest");


            RequestSettings rs = new RequestSettings(this.ApplicationName, this.userName, this.passWord);
            rs.AutoPaging = true; 
            ContactsRequest cr = new ContactsRequest(rs);

            Feed<Group> fg = cr.GetGroups();

            Group newGroup = new Group();
            newGroup.Title = "Private Data";

            Group insertedGroup = cr.Insert(fg, newGroup);

            Group g2 = new Group();
            g2.Title = "Another private Group"; 

            Group insertedGroup2 = cr.Insert(fg, g2); 

            // now insert a new contact that belongs to that group
            Feed<Contact> fc = cr.GetContacts();
            Contact c = new Contact();
            c.AtomEntry = ObjectModelHelper.CreateContactEntry(1);

            GroupMembership member = new GroupMembership();
            member.HRef = insertedGroup.Id; 


            GroupMembership member2 = new GroupMembership();
            member2.HRef = insertedGroup2.Id; 
            
            Contact insertedEntry = cr.Insert(fc, c);

            // now change the group membership
            insertedEntry.GroupMembership.Add(member);
            insertedEntry.GroupMembership.Add(member2);
            Contact currentEntry = cr.Update(insertedEntry);

            Assert.IsTrue(currentEntry.GroupMembership.Count == 2, "The entry should be in 2 groups");

            currentEntry.GroupMembership.Clear();
            currentEntry = cr.Update(currentEntry);
            Assert.IsTrue(currentEntry.GroupMembership.Count == 0, "The entry should not be in a group");

            cr.Delete(currentEntry);
            cr.Delete(insertedGroup);
            cr.Delete(insertedGroup2);

        }
コード例 #10
0
 public List<Group> GetAll()
 {
     var request = new ContactsRequest(_settings);
     var groups = request.GetGroups().Entries;
     return groups.Select(ParseGroup).ToList();
 }
コード例 #11
0
        public virtual ActionResult GoogleAuthCallback(string code = null, string error = null)
        {
            if (String.IsNullOrWhiteSpace(code))
            {
                return(View(Views.Index));
            }

            var client = new WebClient();

            var parameters = new NameValueCollection
            {
                { "client_id", "1051352266030-l2avpmbf9kk0s8b9eshqu6fkd0gee50g.apps.googleusercontent.com" },
                { "client_secret", "5Ai2kKsRUK8Av5RehYB3rx7k" },
                { "grant_type", "authorization_code" },
                { "redirect_uri", "http://localhost:64901/GoogleAuthCallback" },
                { "code", code }
            };

            var     rawResponse    = client.UploadValues("https://accounts.google.com/o/oauth2/token", parameters);
            var     responseString = Encoding.UTF8.GetString(rawResponse);
            dynamic tokenData      = JsonConvert.DeserializeObject(responseString);

            //rawResponse = client.DownloadData(String.Format("https://www.google.com/m8/feeds/contacts/default/full?access_token={0}", tokenData.access_token));
            //responseString = Encoding.UTF8.GetString(rawResponse);

            //dynamic contactsData = JsonConvert.DeserializeObject(responseString);

            var rs = new RequestSettings("Google Contacts Test", tokenData.access_token.ToString())
            {
                AutoPaging = true
            };

            var cr = new ContactsRequest(rs);

            var rawContacts = cr.GetContacts();
            var rawGroups   = cr.GetGroups();

            var groups = new List <String>();

            foreach (var entry in rawGroups.Entries)
            {
                groups.Add(entry.Title);
            }


            var contacts = new List <Tuple <String, String> >();

            foreach (var entry in rawContacts.Entries)
            {
                if (!entry.Emails.Any())
                {
                    continue;
                }

                var b = (from gm in entry.GroupMembership
                         join rg in rawGroups.Entries on gm.HRef equals rg.AtomEntry.Id.AbsoluteUri
                         where !rg.Title.ToLower().Equals("starred in android")
                         select
                         rg.Title.ToLower().Contains("system group")
                            ? rg.Title.Split(new[] { ':' })[1].Trim()
                            : rg.Title)
                        .ToList();

                var tuple = new Tuple <string, string>(entry.Title, entry.Emails.First().Address);
                contacts.Add(tuple);
            }

            return(View(Views.Index));
        }
コード例 #12
0
 private IList <Group> GetAllContactGroups(ContactsRequest request)
 {
     request.Settings.AutoPaging = false;
     request.Settings.Maximum    = GoogleSyncSettings.DefaultMaxContactGroupCount;
     return(request.GetGroups().Entries.ToList());
 }