private EAS.generated.FolderResponseNamespace.FolderSync GetFolderSyncObjectFromXML(string x) { MemoryStream streamOut = new MemoryStream(); StreamWriter writer = new StreamWriter(streamOut); writer.Write(x); writer.Flush(); streamOut.Position = 0; XmlSerializer deser = new XmlSerializer(typeof(EAS.generated.FolderResponseNamespace.FolderSync)); EAS.generated.FolderResponseNamespace.FolderSync fsResponse = (EAS.generated.FolderResponseNamespace.FolderSync)deser.Deserialize(streamOut); return(fsResponse); }
public bool SetConversation(string sessionKey, string syncKey, ref string kom) { try { string folderToSync = string.Empty; string days = string.Empty; uint policyKey = uint.Parse(sessionKey); StringBuilder xmlBuilder = null; ASCommandRequest commandRequest = null; ASCommandResponse commandResponse = null; string postfixFolder = string.Empty; if (syncKey == "0") { xmlBuilder = new StringBuilder(); if (Directory.Exists(mailDir)) { xmlBuilder.Append(SetFolderSyncObjectAsXml("0")); } commandRequest = CreateCommandRequest("FolderSync", cred, devID, devType, protVer, server, username, xmlBuilder.ToString(), policyKey); // Send the request commandResponse = commandRequest.GetResponse(); Console.WriteLine("XML Response: {0}", commandResponse.XmlString); EAS.generated.FolderResponseNamespace.FolderSync fsFromEAS = GetFolderSyncObjectFromXML(commandResponse.XmlString); if (fsFromEAS != null && fsFromEAS.Status == "1" && fsFromEAS.Changes != null && fsFromEAS.Changes.Add != null) { List <List <string> > lstDirsToChoose = new List <List <string> >(); List <string> lstDirsToDisplay = new List <string>(); foreach (EAS.generated.FolderResponseNamespace.FolderSyncChangesAdd fsca in fsFromEAS.Changes.Add) { if (fsca.Type == "5" || fsca.Type == "2") { lstDirsToChoose.Add(new List <string> { fsca.ServerId, fsca.DisplayName }); lstDirsToDisplay.Add(fsca.DisplayName); } } FolderDecision fd = new FolderDecision(lstDirsToDisplay, true); fd.SelectedFolder = lstDirsToChoose.Where(q => q[0] == "4").FirstOrDefault()[1]; fd.ShowDialog(); if (!Directory.Exists(mailDir + "\\" + fd.SelectedFolder.Replace(" ", ""))) { Directory.CreateDirectory(mailDir + "\\" + fd.SelectedFolder.Replace(" ", "")); } mailDir = mailDir + "\\" + fd.SelectedFolder.Replace(" ", ""); folderToSync = lstDirsToChoose.Where(q => q[1] == fd.SelectedFolder).FirstOrDefault()[0]; days = fd.SelectedTime; } //sync 1 xmlBuilder = new StringBuilder(); xmlBuilder.Append(SetSyncObjectAsXml(syncKey, folderToSync, days)); XmlDocument xDoc = new XmlDocument(); xDoc.PreserveWhitespace = true; xDoc.LoadXml(xmlBuilder.ToString()); commandRequest.XmlString = xDoc.InnerXml; // Send the request commandRequest = CreateCommandRequest("Sync", cred, devID, devType, protVer, server, username, xmlBuilder.ToString(), policyKey); commandResponse = commandRequest.GetResponse(); EAS.generated.SyncResponseNamespace.Sync syncResponse = GetSyncObjectFromXML(commandResponse.XmlString); if (syncResponse != null) { if (syncResponse.Item is EAS.generated.SyncResponseNamespace.SyncCollections) { EAS.generated.SyncResponseNamespace.SyncCollections sc = (EAS.generated.SyncResponseNamespace.SyncCollections)syncResponse.Item; if (sc.Collection != null) { //WYCHWYC INBOX foreach (EAS.generated.SyncResponseNamespace.SyncCollectionsCollection scc in sc.Collection) { List <EAS.generated.SyncResponseNamespace.ItemsChoiceType7> lst = new List <EAS.generated.SyncResponseNamespace.ItemsChoiceType7>(scc.ItemsElementName); int index = lst.FindIndex(q => q == EAS.generated.SyncResponseNamespace.ItemsChoiceType7.CollectionId); if (index > 0) { if (scc.Items[index].ToString() == folderToSync) { List <EAS.generated.SyncResponseNamespace.ItemsChoiceType7> lstSync = new List <EAS.generated.SyncResponseNamespace.ItemsChoiceType7>(scc.ItemsElementName); int indexSync = lst.FindIndex(q => q == EAS.generated.SyncResponseNamespace.ItemsChoiceType7.SyncKey); syncKey = scc.Items[indexSync].ToString(); break; } } } } } } } List <string> lstEmailsToFetch = new List <string>(); bool continuingLoop = true; do { //sync2 xmlBuilder = new StringBuilder(); xmlBuilder.Append(SetSyncObjectAsXml(syncKey, folderToSync, days)); // Send the request commandRequest = CreateCommandRequest("Sync", cred, devID, devType, protVer, server, username, xmlBuilder.ToString(), policyKey); commandRequest.XmlString = xmlBuilder.ToString(); commandResponse = commandRequest.GetResponse(); EAS.generated.SyncResponseNamespace.Sync syncResponse2 = GetSyncObjectFromXML(commandResponse.XmlString); if (syncResponse2 != null) { if (syncResponse2.Item is EAS.generated.SyncResponseNamespace.SyncCollections) { EAS.generated.SyncResponseNamespace.SyncCollections sc = (EAS.generated.SyncResponseNamespace.SyncCollections)syncResponse2.Item; if (sc.Collection != null) { EAS.generated.SyncResponseNamespace.SyncCollectionsCollection[] scc = sc.Collection; foreach (EAS.generated.SyncResponseNamespace.SyncCollectionsCollection sccItem in scc) { List <EAS.generated.SyncResponseNamespace.ItemsChoiceType7> lst = new List <EAS.generated.SyncResponseNamespace.ItemsChoiceType7>(sccItem.ItemsElementName); int index = lst.FindIndex(q => q == EAS.generated.SyncResponseNamespace.ItemsChoiceType7.CollectionId); if (index > 0) { if (sccItem.Items[index].ToString() == folderToSync) { EAS.generated.SyncResponseNamespace.SyncCollectionsCollectionCommands sccc = null; List <EAS.generated.SyncResponseNamespace.ItemsChoiceType7> lstSync = new List <EAS.generated.SyncResponseNamespace.ItemsChoiceType7>(sccItem.ItemsElementName); int indexCommand = lst.FindIndex(q => q == EAS.generated.SyncResponseNamespace.ItemsChoiceType7.Commands); if (indexCommand > -1) { if (sccItem.Items[indexCommand] is EAS.generated.SyncResponseNamespace.SyncCollectionsCollectionCommands) { sccc = (EAS.generated.SyncResponseNamespace.SyncCollectionsCollectionCommands)sccItem.Items[indexCommand]; foreach (object o in sccc.Items) { if (o is EAS.generated.SyncResponseNamespace.SyncCollectionsCollectionCommandsAdd) { EAS.generated.SyncResponseNamespace.SyncCollectionsCollectionCommandsAdd sccca = (EAS.generated.SyncResponseNamespace.SyncCollectionsCollectionCommandsAdd)o; lstEmailsToFetch.Add(sccca.ServerId); OnTotalNumberOfFilesEvent(string.Format("{0} {1}", lstEmailsToFetch.Count.ToString(), _rm.GetString("strEmailsToSync"))); } } } } int synckeyIdx = lst.FindIndex(q => q == EAS.generated.SyncResponseNamespace.ItemsChoiceType7.SyncKey); if (synckeyIdx > -1) { syncKey = sccItem.Items[synckeyIdx].ToString(); syncKey = (int.Parse(syncKey)).ToString(); } int moreAvailableIdx = lst.FindIndex(q => q == EAS.generated.SyncResponseNamespace.ItemsChoiceType7.MoreAvailable); if (moreAvailableIdx > -1) { continuingLoop = true; } else { continuingLoop = false; } } } } } } } else { MessageBox.Show(_rm.GetString("errSerialization")); } }while (continuingLoop); WriteEmailsToDirectory(lstEmailsToFetch, folderToSync, policyKey); return(true); } catch (Exception ex) { kom = _rm.GetString("lblTotalGenericErrorRes") + " " + ex.Message; return(false); } }