private int AddAssetsToList(List<AssetInfo> assets, AccessAsset accessAsset, string assetPath, int folderAssetId, int currentPage, int pageSize) { var returnAllPages = pageSize == -1; // Fetch specified page of data var request = new AssetPagedRequest { assetId = folderAssetId, currentPage = currentPage - 1, pageSize = returnAllPages ? _maxSupportedPageSize : pageSize, sortColumn = "", orderType = cpAssetOrderType.Ascending, visibilityType = cpAssetVisibilityType.Normal, ignoreFilter = true, ignoreSort = true }; var response = accessAsset.Paged(request); if (response != null && response.assets != null) { foreach (var worklistAsset in response.assets) { if (worklistAsset.type == (int)AssetType.File || worklistAsset.type == (int)AssetType.Folder) { var publishedUrl = _settings.PublishSiteRootUrl + _settings.ImageBrowsePublishServerPath + assetPath + "/" + worklistAsset.label; assets.Add(new AssetInfo { Id = worklistAsset.id, Label = worklistAsset.label, CmsPath = worklistAsset.FullPath, PublishedUrl = publishedUrl, IsFolder = worklistAsset.type == (int)AssetType.Folder }); } } } // If returning all results, determine if additional pages of data need to be loaded if (returnAllPages && (response.normalCount > (currentPage * _maxSupportedPageSize))) { currentPage++; return AddAssetsToList(assets, accessAsset, assetPath, folderAssetId, currentPage, pageSize); } return response.normalCount; }