private List <Tuple <string, string, string, string> > GetSharedFolders(IGroupsModel model, IMainPresenter presenter) { IMemberServices service = service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListSharedFoldersUrl = ApplicationResource.ActionSharingListFolders; service.UserAgentVersion = ApplicationResource.UserAgent; var sharedFolders = new List <Tuple <string, string, string, string> >(); string memberId = string.Empty; foreach (var item in model.GroupInfo) { if (!string.IsNullOrEmpty(item.TeamMemberId)) { memberId = item.TeamMemberId; break; } } IDataResponse response = service.ListSharedFolders(new MemberData() { MemberId = memberId }, ApplicationResource.DefaultAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject <dynamic>(data); int resultCount = jsonData["entries"].Count; for (int i = 0; i < resultCount; i++) { dynamic entries = jsonData["entries"][i]; dynamic sharedFolderId = Convert.ToString(entries["shared_folder_id"]); dynamic sharedFolderName = Convert.ToString(entries["name"]); dynamic isInsideTeamFolder = Convert.ToString(entries["is_inside_team_folder"]); dynamic isTeamFolder = Convert.ToString(entries["is_team_folder"]); var tuple = Tuple.Create(sharedFolderId, sharedFolderName, isInsideTeamFolder, isTeamFolder); if (!sharedFolders.Contains(tuple)) { sharedFolders.Add(tuple); } } //if the group count is above limit - default 1000 we need to grab the cursor and call continue string cursor = jsonData["cursor"]; while (!string.IsNullOrEmpty(cursor)) { service.ListSharedFoldersUrl = ApplicationResource.ActionSharingListFoldersContinuation; IDataResponse responseCont = service.ListSharedFolders(new MemberData() { MemberId = memberId, Cursor = cursor }, model.AccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject <dynamic>(dataCont); int resultContCount = jsonDataCont["entries"].Count; for (int i = 0; i < resultContCount; i++) { dynamic entries = jsonDataCont["entries"][i]; dynamic sharedFolderId = Convert.ToString(entries["shared_folder_id"]); dynamic sharedFolderName = Convert.ToString(entries["name"]); dynamic isInsideTeamFolder = Convert.ToString(entries["is_inside_team_folder"]); dynamic isTeamFolder = Convert.ToString(entries["is_team_folder"]); var tuple = Tuple.Create(sharedFolderId, sharedFolderName, isInsideTeamFolder, isTeamFolder); if (!sharedFolders.Contains(tuple)) { sharedFolders.Add(tuple); } } cursor = jsonDataCont["cursor"]; } } } return(sharedFolders); }