コード例 #1
0
        public async Task<SyncContactObject> GetContacts(ResourceAuthToken token)
        {

            var dbContacts = await _dbProvider.GetContacts(token.Id);
            if (token.AuthToken == null || !_resourceHandlers.ContainsKey(token.ResourceProvider))
            {
                return new SyncContactObject(dbContacts.ToList(), token.ResourceProvider);
            }

            try
            {
                var externalContacts = _resourceHandlers[token.ResourceProvider].RetrieveContacts(token);
                var newContacts = externalContacts.Where(externalContact =>
                    dbContacts.All(dbContact => dbContact.Id != externalContact.Id));                    
                await _dbProvider.UpdateContacts(token.Id, newContacts.ToList());
                dbContacts = await _dbProvider.GetContacts(token.Id);
            }
            catch (GDataRequestException e)
            {
                var errMsg = new ErrorMessage($"Error occurred while retrieving data from {token.ResourceProvider}. Refresh token",
                    e);
                return new SyncContactObject(dbContacts, token.ResourceProvider, errMsg);
            }
            catch (Exception e)
            {
                var errMsg = new ErrorMessage($"General error occurred",
                    e);
                return new SyncContactObject(dbContacts, token.ResourceProvider, errMsg);                    
            }
            return new SyncContactObject(dbContacts.ToList(), token.ResourceProvider);
        }
コード例 #2
0
        public bool DeleteContact(ResourceAuthToken authParams, string contactId)
        {
            RequestSettings settings         = new RequestSettings("ContactsManager", authParams.AuthToken);
            ContactsRequest cr               = new ContactsRequest(settings);
            var             retrievedContact = cr.Retrieve <global::Google.Contacts.Contact>(new Uri(contactId));

            cr.Delete(retrievedContact);
            return(true);
        }
コード例 #3
0
        public IEnumerable <Contact> RetrieveContacts(ResourceAuthToken authParams)
        {
            RequestSettings settings            = new RequestSettings("ContactsManager", authParams.AuthToken);
            ContactsRequest contactsProvider    = new ContactsRequest(settings);
            var             googleContactResult = contactsProvider.GetContacts();
            var             contactsList        = CastEntriesToContacts(googleContactResult.Entries, contactsProvider);

            return(contactsList);
        }
コード例 #4
0
 public async Task<IEnumerable<Contact>> DeleteContact(ResourceAuthToken token, string contactId, bool changeInResource = false)
 {
     await _dbProvider.RemoveContact(token.Id,
         (await GetContact(token, contactId)).RetrievedContacts.FirstOrDefault());
     if (changeInResource && _resourceHandlers.ContainsKey(token.ResourceProvider))
     {
         _resourceHandlers[token.ResourceProvider].DeleteContact(token, contactId);
     }
     return await _dbProvider.GetContacts(token.Id);
 }
コード例 #5
0
        public async Task<IEnumerable<Contact>> UpdateContacts(ResourceAuthToken token, IEnumerable<Contact> updatedContacts, bool changeInResource = false)
        {
            var contactsList = updatedContacts.ToList();
            await _dbProvider.UpdateContacts(token.Id, contactsList.ToList());
            if (changeInResource && _resourceHandlers.ContainsKey(token.ResourceProvider))
            {
                _resourceHandlers[token.ResourceProvider].AddContacts(token, contactsList);
            }

            return await _dbProvider.GetContacts(token.Id);
        }
コード例 #6
0
        public bool AddContacts(ResourceAuthToken authParams, IEnumerable <Contact> contacts)
        {
            //if (SendPreRequest($"https://www.google.com/m8/feeds/contacts/{authParams.Id}/full", authParams,
            //        "POST") != HttpStatusCode.Created) return false;

            RequestSettings settings         = new RequestSettings("ContactsManager", authParams.AuthToken);
            ContactsRequest contactsProvider = new ContactsRequest(settings);

            foreach (var contact in contacts)
            {
                CreateContact(contactsProvider, contact);
            }
            return(true);
        }
コード例 #7
0
        private HttpStatusCode SendPreRequest(string uri, ResourceAuthToken token, string method)
        {
            var request = WebRequest.CreateHttp(uri);

            request.Method          = method;
            request.PreAuthenticate = true;
            request.Headers.Add("Authorization", "Bearer " + token.AuthToken.AccessToken);
            request.Accept = "application/json";

            var myWebResponse  = request.GetResponse();
            var responseStream = myWebResponse.GetResponseStream();

            if (responseStream == null)
            {
                return(HttpStatusCode.NotFound);
            }

            var myStreamReader = new StreamReader(responseStream, Encoding.Default);
            var json           = myStreamReader.ReadToEnd();

            responseStream.Close();
            myWebResponse.Close();
            return(HttpStatusCode.OK);
        }
コード例 #8
0
 public async Task<SyncContactObject> GetContact(ResourceAuthToken token, string id)
 {
     var dbContacts = await _dbProvider.GetContacts(token.Id);
     return new SyncContactObject(new List<Contact>()
         {dbContacts.FirstOrDefault(dbContact => HttpUtility.UrlDecode(dbContact.Id) == id)},token.ResourceProvider);
 }