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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }