private bool SearchFiles( IMemberServices service, TeamListViewItemModel item, IDumpUserContentModel model, IMainPresenter presenter) { bool filesAdded = false; try { service.ListFolderUrl = ApplicationResource.ActionListFolder; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListFolders( new MemberData() { MemberId = item.TeamId }, model.UserAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string content = response.Data as string; dynamic jsonDataSearch = JsonConvert.DeserializeObject<dynamic>(content); int entryCount = 0; if (jsonDataSearch["entries"] != null) { entryCount = jsonDataSearch["entries"].Count; } //remove existing file entries. for (int i = model.MemberList.Count - 1; i >= 0; i--) { TeamListViewItemModel lvItem = model.MemberList[i]; if (lvItem.TeamId.Equals(item.TeamId)) { model.MemberList.RemoveAt(i); } } int total = 0; for (int i = 0; i < entryCount; i++) { if (jsonDataSearch["entries"][i][".tag"].ToString().Equals("file")) { TeamListViewItemModel lvItem = new TeamListViewItemModel() { Email = item.Email, TeamId = item.TeamId, FileName = jsonDataSearch["entries"][i]["name"].ToString(), FilePath = jsonDataSearch["entries"][i]["path_lower"].ToString(), FileSize = FileUtil.FormatFileSize(Convert.ToInt64(jsonDataSearch["entries"][i]["size"].ToString())), IsChecked = true }; model.MemberList.Add(lvItem); SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Searching Files For : {0} File Count: {1}", item.Email, (++total))); }, null); } } if (entryCount > 0) { filesAdded = true; } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } return filesAdded; }
private void SearchItems( IMemberServices service, TeamListViewItemModel owner, IDataMigrationModel model, IMainPresenter presenter) { bool SuppressStatus = ApplicationResource.SuppressFilenamesInStatus; bool complete = false; //remove when done debugging exceptionCount = 0; try { while (!complete) { service.ListFolderUrl = ApplicationResource.ActionListFolder; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListFolders( new MemberData() { MemberId = owner.TeamId }, model.AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string content = response.Data as string; dynamic jsonDataSearch = JsonConvert.DeserializeObject <dynamic>(content); IDictionary <string, long> folderMap = new Dictionary <string, long>(); int entryCount = jsonDataSearch["entries"].Count; int foundTotal = 0; for (int i = 0; i < entryCount; i++) { dynamic entry = jsonDataSearch["entries"][i]; string type = entry[".tag"].ToString(); ContentDisplayListViewItemModel lvItem = null; if (type.Equals("folder")) { lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSizeByte = 0 }; } else { string serverModified = entry["server_modified"].ToString(); string serverModifiedDate = string.Empty; if (!string.IsNullOrEmpty(serverModified)) { DateTime lastModified = DateTime.SpecifyKind( DateTime.Parse(serverModified), DateTimeKind.Utc ); serverModifiedDate = lastModified.ToString("dd MMM yyyy"); } string fileSizeStr = jsonDataSearch["entries"][i]["size"].ToString(); long fileSize = 0; long.TryParse(fileSizeStr, out fileSize); lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSize = FileUtil.FormatFileSize(fileSize), ItemSizeByte = fileSize, LastModified = serverModifiedDate, Uploaded = serverModifiedDate, Created = serverModifiedDate }; } lock (insertLock) { model.Contents.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { if (!SuppressStatus) { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, lvItem.ItemName, (++foundTotal), entryCount)); } else { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, "Suppressing filename status", (++foundTotal), entryCount)); } }, null); } } bool hasMore = jsonDataSearch["has_more"]; string cursor = jsonDataSearch["cursor"]; while (hasMore) { service.ListFolderUrl = ApplicationResource.ActionListFolderContinuation; IDataResponse responseCont = service.ListFolders( new MemberData() { MemberId = owner.TeamId, Cursor = cursor }, model.AccessToken); string contentCont = responseCont.Data as string; dynamic jsonDataSearchCont = JsonConvert.DeserializeObject <dynamic>(contentCont); IDictionary <string, long> folderMapCont = new Dictionary <string, long>(); int entryCountCont = jsonDataSearchCont["entries"].Count; int foundTotalCont = 0; for (int i = 0; i < entryCountCont; i++) { dynamic entry = jsonDataSearchCont["entries"][i]; string type = entry[".tag"].ToString(); ContentDisplayListViewItemModel lvItem = null; if (type.Equals("folder")) { lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSizeByte = 0 }; } else { string serverModified = entry["server_modified"].ToString(); string serverModifiedDate = string.Empty; if (!string.IsNullOrEmpty(serverModified)) { DateTime lastModified = DateTime.SpecifyKind( DateTime.Parse(serverModified), DateTimeKind.Utc ); serverModifiedDate = lastModified.ToString("dd MMM yyyy"); } string fileSizeStr = jsonDataSearchCont["entries"][i]["size"].ToString(); long fileSize = 0; long.TryParse(fileSizeStr, out fileSize); lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSize = FileUtil.FormatFileSize(fileSize), ItemSizeByte = fileSize, LastModified = serverModifiedDate, Uploaded = serverModifiedDate, Created = serverModifiedDate }; } lock (insertLock) { model.Contents.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { if (!SuppressStatus) { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, lvItem.ItemName, (++foundTotalCont), entryCountCont)); } else { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, "Suppressing filename status", (++foundTotalCont), entryCountCont)); } }, null); } } hasMore = jsonDataSearchCont["has_more"]; cursor = jsonDataSearchCont["cursor"]; } } complete = true; } if (response.StatusCode != HttpStatusCode.OK) { //error from API if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); if (data == "") { complete = false; retryCount++; } } else { //response.Data is null so let's retry complete = false; retryCount++; } } } } catch (Exception ex) { exceptionCount++; Console.WriteLine(ex.Message); } }
private bool SearchFiles( IMemberServices service, TeamListViewItemModel item, IDumpUserContentModel model, IMainPresenter presenter) { bool filesAdded = false; try { service.ListFolderUrl = ApplicationResource.ActionListFolder; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListFolders( new MemberData() { MemberId = item.TeamId }, model.UserAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string content = response.Data as string; dynamic jsonDataSearch = JsonConvert.DeserializeObject <dynamic>(content); int entryCount = 0; if (jsonDataSearch["entries"] != null) { entryCount = jsonDataSearch["entries"].Count; } //remove existing file entries. for (int i = model.MemberList.Count - 1; i >= 0; i--) { TeamListViewItemModel lvItem = model.MemberList[i]; if (lvItem.TeamId.Equals(item.TeamId)) { model.MemberList.RemoveAt(i); } } int total = 0; for (int i = 0; i < entryCount; i++) { TeamListViewItemModel lvItem = null; if (jsonDataSearch["entries"][i][".tag"].ToString().Equals("file")) { lvItem = new TeamListViewItemModel() { Email = item.Email, TeamId = item.TeamId, FileName = jsonDataSearch["entries"][i]["name"].ToString(), FilePath = jsonDataSearch["entries"][i]["path_lower"].ToString(), FileSize = FileUtil.FormatFileSize(Convert.ToInt64(jsonDataSearch["entries"][i]["size"].ToString())), IsChecked = true }; lock (insertLock) { model.MemberList.Add(lvItem); } SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Searching Files For : {0} File Count: {1}", item.Email, (++total))); }, null); } } if (entryCount > 0) { filesAdded = true; } bool hasMore = jsonDataSearch["has_more"]; string cursor = jsonDataSearch["cursor"]; while (hasMore) { service.ListFolderUrl = ApplicationResource.ActionListFolderContinuation; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse responseCont = service.ListFolders( new MemberData() { MemberId = item.TeamId, Cursor = cursor }, model.UserAccessToken); string contentCont = responseCont.Data as string; dynamic jsonDataSearchCont = JsonConvert.DeserializeObject <dynamic>(contentCont); int entryCountCont = 0; if (jsonDataSearchCont["entries"] != null) { entryCountCont = jsonDataSearchCont["entries"].Count; } int totalCont = 0; for (int i = 0; i < entryCountCont; i++) { TeamListViewItemModel lvItem = null; if (jsonDataSearchCont["entries"][i][".tag"].ToString().Equals("file")) { lvItem = new TeamListViewItemModel() { Email = item.Email, TeamId = item.TeamId, FileName = jsonDataSearchCont["entries"][i]["name"].ToString(), FilePath = jsonDataSearchCont["entries"][i]["path_lower"].ToString(), FileSize = FileUtil.FormatFileSize(Convert.ToInt64(jsonDataSearchCont["entries"][i]["size"].ToString())), IsChecked = true }; lock (insertLock) { model.MemberList.Add(lvItem); } SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Searching Files For : {0} File Count: {1}", item.Email, (++totalCont))); }, null); } } if (entryCountCont > 0) { filesAdded = true; } hasMore = jsonDataSearchCont["has_more"]; cursor = jsonDataSearchCont["cursor"]; } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } return(filesAdded); }
private void SearchItems( IMemberServices service, TeamListViewItemModel owner, IDataMigrationModel model, IMainPresenter presenter) { bool SuppressStatus = ApplicationResource.SuppressFilenamesInStatus; try { service.ListFolderUrl = ApplicationResource.ActionListFolder; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListFolders( new MemberData() { MemberId = owner.TeamId }, model.AccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string content = response.Data as string; dynamic jsonDataSearch = JsonConvert.DeserializeObject<dynamic>(content); IDictionary<string, long> folderMap = new Dictionary<string, long>(); int entryCount = jsonDataSearch["entries"].Count; int foundTotal = 0; for (int i = 0; i < entryCount; i++) { dynamic entry = jsonDataSearch["entries"][i]; string type = entry[".tag"].ToString(); ContentDisplayListViewItemModel lvItem = null; if (type.Equals("folder")) { lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSizeByte = 0 }; } else { string serverModified = entry["server_modified"].ToString(); string serverModifiedDate = string.Empty; if (!string.IsNullOrEmpty(serverModified)) { DateTime lastModified = DateTime.SpecifyKind( DateTime.Parse(serverModified), DateTimeKind.Utc ); serverModifiedDate = lastModified.ToString("dd MMM yyyy"); } string fileSizeStr = jsonDataSearch["entries"][i]["size"].ToString(); long fileSize = 0; long.TryParse(fileSizeStr, out fileSize); lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSize = FileUtil.FormatFileSize(fileSize), ItemSizeByte = fileSize, LastModified = serverModifiedDate, Uploaded = serverModifiedDate, Created = serverModifiedDate }; } lock (insertLock) { model.Contents.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { if (!SuppressStatus) { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, lvItem.ItemName, (++foundTotal), entryCount)); } else { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, "Suppressing filename status", (++foundTotal), entryCount)); } }, null); } } bool hasMore = jsonDataSearch["has_more"]; string cursor = jsonDataSearch["cursor"]; while (hasMore) { service.ListFolderUrl = ApplicationResource.ActionListFolderContinuation; IDataResponse responseCont = service.ListFolders( new MemberData() { MemberId = owner.TeamId, Cursor = cursor }, model.AccessToken); string contentCont = responseCont.Data as string; dynamic jsonDataSearchCont = JsonConvert.DeserializeObject<dynamic>(contentCont); IDictionary<string, long> folderMapCont = new Dictionary<string, long>(); int entryCountCont = jsonDataSearchCont["entries"].Count; int foundTotalCont = 0; for (int i = 0; i < entryCountCont; i++) { dynamic entry = jsonDataSearchCont["entries"][i]; string type = entry[".tag"].ToString(); ContentDisplayListViewItemModel lvItem = null; if (type.Equals("folder")) { lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSizeByte = 0 }; } else { string serverModified = entry["server_modified"].ToString(); string serverModifiedDate = string.Empty; if (!string.IsNullOrEmpty(serverModified)) { DateTime lastModified = DateTime.SpecifyKind( DateTime.Parse(serverModified), DateTimeKind.Utc ); serverModifiedDate = lastModified.ToString("dd MMM yyyy"); } string fileSizeStr = jsonDataSearchCont["entries"][i]["size"].ToString(); long fileSize = 0; long.TryParse(fileSizeStr, out fileSize); lvItem = new ContentDisplayListViewItemModel() { ItemType = type, Email = owner.Email, MemberId = owner.TeamId, FirstName = owner.FirstName, LastName = owner.LastName, ItemName = entry["name"].ToString(), ItemPath = entry["path_lower"].ToString(), ItemPathDisplay = entry["path_display"].ToString(), ItemSize = FileUtil.FormatFileSize(fileSize), ItemSizeByte = fileSize, LastModified = serverModifiedDate, Uploaded = serverModifiedDate, Created = serverModifiedDate }; } lock (insertLock) { model.Contents.Add(lvItem); } if (SyncContext != null) { SyncContext.Post(delegate { if (!SuppressStatus) { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, lvItem.ItemName, (++foundTotalCont), entryCountCont)); } else { presenter.UpdateProgressInfo(string.Format("Owner: [{0}] Item: [{1}] {2}/{3}", lvItem.Email, "Suppressing filename status", (++foundTotalCont), entryCountCont)); } }, null); } } hasMore = jsonDataSearchCont["has_more"]; cursor = jsonDataSearchCont["cursor"]; } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }