public async Task <IEnumerable <FileWithTotal> > GetFiles(GetFilesFilter filter) { return(await QueryAsync <FileWithTotal>(Functions.GetFiles, new { _username = filter.Username, _page = filter.Page, _take = filter.Take, _search = filter.Search, _ownership_status = filter.OwnershipStatus })); }
/// <summary> /// Get a paginated file list. /// </summary> /// <param name="filter"></param> public async Task <PaginatedResult <File> > GetListAsync(GetFilesFilter filter) { var pathSB = new StringBuilder("?ordering="); if (filter.SortDirection.Equals(GetFilesFilter.Direction.Descending)) { pathSB.Append("-"); } pathSB.Append(filter.Sort); if (filter.OnlyRemoved) { pathSB.Append("&removed=true"); } if (filter.Stored.HasValue) { pathSB.Append("&stored=").Append(filter.Stored.Value ? "true" : "false"); } if (filter.Limit > 0) { pathSB.Append("&limit=").Append(filter.Limit); } if (filter.Sort.Equals(GetFilesFilter.SortProperty.datetime_uploaded) && filter.FromDatetimeUploaded.HasValue) { pathSB.Append("&from=").Append(filter.FromDatetimeUploaded.Value.ToString("yyyy-MM-ddTHH:mm:ss")); } else if (filter.Sort.Equals(GetFilesFilter.SortProperty.size) && filter.FromSize > 0) { pathSB.Append("&from=").Append(filter.FromSize); } var uri = new Uri(UrlHelper.ApiFiles(), pathSB.ToString()); using (var request = new HttpRequestMessage(HttpMethod.Get, uri)) { return(await ExecuteRequestAsync <PaginatedResult <File> >(this._httpClient, request).ConfigureAwait(false)); } }
// получение строкового массива из имен файлов, отфильтрованных // делегатом. public static string[] GetFiles(string path, GetFilesFilter filter) { ArrayList res = new ArrayList(); foreach (string file in Directory.GetFiles(path)) { // файл включается только с разрешения метода filter // он у нас FilterFiles if (filter == null || filter(file)) { res.Add(file); } } // углубляемся внутрь директорий foreach (string dir in Directory.GetDirectories(path)) { // AddRange дописывает элементы коллекции (string[]) // в конец данной коллекции res.AddRange(GetFiles(dir, filter)); // рекурсия! } return((string[])res.ToArray(typeof(string))); }