public FileDescription GetFileDescription(IOConnectionInfo ioc) { try { string filename = ioc.Path; PathItemBuilder pathItemBuilder = GetPathItemBuilder(filename); if (!pathItemBuilder.itemLocation.LocalPath.Any() && !pathItemBuilder.hasShare()) { FileDescription rootEntry = new FileDescription(); rootEntry.CanRead = rootEntry.CanWrite = true; rootEntry.Path = filename; rootEntry.DisplayName = pathItemBuilder.itemLocation.User.Name; rootEntry.IsDirectory = true; return(rootEntry); } IDriveItemRequestBuilder pathItem = pathItemBuilder.getPathItem(); DriveItem item = Task.Run(async() => await pathItem.Request().GetAsync()).Result; return(GetFileDescription(pathItemBuilder.itemLocation, item)); } catch (Exception e) { throw convertException(e); } }
public IEnumerable <FileDescription> ListContents(IOConnectionInfo ioc) { try { PathItemBuilder pathItemBuilder = GetPathItemBuilder(ioc.Path); logDebug("listing files for " + ioc.Path); if (!pathItemBuilder.hasShare() && !pathItemBuilder.hasOneDrivePath()) { logDebug("listing shares."); return(ListShares(pathItemBuilder.itemLocation, pathItemBuilder.client)); } logDebug("listing regular children."); List <FileDescription> result = new List <FileDescription>(); /*logDebug("parent before:" + parentPath); * parentPath = parentPath.substring(getProtocolPrefix().length()); * logDebug("parent after: " + parentPath);*/ IDriveItemChildrenCollectionPage itemsPage = Task.Run(async() => await pathItemBuilder.getPathItem() .Children .Request() .GetAsync()).Result; while (true) { IList <DriveItem> items = itemsPage.CurrentPage; if (!items.Any()) { return(result); } foreach (DriveItem i in items) { var e = GetFileDescription(pathItemBuilder.itemLocation.BuildLocalChildLocation(i.Name, i.Id, i.ParentReference?.DriveId), i); result.Add(e); } var nextPageReqBuilder = itemsPage.NextPageRequest; if (nextPageReqBuilder == null) { return(result); } itemsPage = Task.Run(async() => await nextPageReqBuilder.GetAsync()).Result; } } catch (Exception e) { throw convertException(e); } }
private async Task <FileDescription> GetFileDescriptionAsync(IOConnectionInfo ioc) { string filename = ioc.Path; PathItemBuilder pathItemBuilder = await GetPathItemBuilder(filename); if (!pathItemBuilder.itemLocation.LocalPath.Any() && !pathItemBuilder.hasShare()) { FileDescription rootEntry = new FileDescription(); rootEntry.CanRead = rootEntry.CanWrite = true; rootEntry.Path = filename; rootEntry.DisplayName = pathItemBuilder.itemLocation.User.Name; rootEntry.IsDirectory = true; return(rootEntry); } IDriveItemRequestBuilder pathItem = pathItemBuilder.getPathItem(); DriveItem item = await pathItem.Request().GetAsync(); return(GetFileDescription(pathItemBuilder.itemLocation, item)); }