public static NetworkItemInfo ToNetworkItemInfo(this WebDavSessionItem item, TappedEventHandler tapped, RightTappedEventHandler rightTapped, HoldingEventHandler holding, bool isOrderByName) { return(new NetworkItemInfo() { ServerType = ServerTypes.WebDAV, ContentType = item.ContentType, Created = item.CreationDate.GetValueOrDefault(), //IsFile = !item.IsCollection && item.ContentType?.ToLower() != "httpd/unix-directory", IsFile = !item.IsFolder.GetValueOrDefault() || item.ContentType?.ToLower() != "httpd/unix-directory", Modified = item.LastModified.GetValueOrDefault(), Name = item.Name, Size = item.ContentLength.GetValueOrDefault(), Uri = item.Uri, Tapped = tapped, RightTapped = rightTapped, Holding = holding, IsOrderByName = isOrderByName, }); }
// переделать через PropFind public async Task <DirectoryItem> GetItemAsync(Uri fileUri) { DirectoryItem dirItem = new DirectoryItem(); Progress_Start(); try { using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version)) { string fileUrl = fileUri.ToString(); string dirUrl = fileUrl.Remove(fileUrl.LastIndexOf("/")); IList <WebDavSessionItem> items = await session.ListAsync(dirUrl); string fileName = fileUrl.Remove(0, fileUrl.LastIndexOf("/") + 1); WebDavSessionItem sessionItem = items.FirstOrDefault(i => i.Name == fileName); if (sessionItem != null) { dirItem = new DirectoryItem { Name = sessionItem.Name, Uri = sessionItem.Uri, LastModified = sessionItem.LastModified, ContentLength = sessionItem.ContentLength, QuotaUsedBytes = sessionItem.QuotaUsedBytes, IsFolder = sessionItem.IsFolder }; } //LogController.Info(logger, $"Получен файл {fileUri}"); } } catch (Exception e) { LogController.Error(logger, e, $"Ошибка, не удалось получить файл {fileUri}"); } Progress_Stop(); return(dirItem); }
public static NetworkItemInfo ToNetworkItemInfo(this WebDavSessionItem item) { return(ToNetworkItemInfo(item, null, null, null, false)); }
public static ResourceInfoModel ToResourceInfo(this WebDavSessionItem item, Uri baseUri) { var res = new ResourceInfoModel { ContentType = item.ContentType, IsDirectory = item.IsFolder.HasValue ? true: false, Created = item.CreationDate ?? DateTime.MinValue, ETag = item.ETag, LastModified = item.LastModified ?? DateTime.MinValue, Name = item.Name, QuotaAvailable = item.QuotaAvailableBytes ?? 0, QuotaUsed = item.QuotaUsedBytes ?? 0, Size = item.ContentLength.HasValue && item.ContentLength.Value != 0 ? item.ContentLength.Value : item.QuotaUsedBytes ?? 0, Path = Uri.UnescapeDataString(item.Uri.AbsoluteUri.Replace(baseUri.AbsoluteUri, "")) }; // NC specific properties. var ncProps = item.AdditionalProperties; if (ncProps != null) { var key = XName.Get(WebDAVPropNameConstants.Checksums, NsOc); if (ncProps.ContainsKey(key)) { res.Checksums = ncProps[key]; } key = XName.Get(WebDAVPropNameConstants.CommentsCount, NsOc); if (ncProps.ContainsKey(key)) { var commentsCount = ncProps[key]; res.CommentsCount = string.IsNullOrEmpty(commentsCount) ? 0 : long.Parse(commentsCount); } key = XName.Get(WebDAVPropNameConstants.CommentsHref, NsOc); if (ncProps.ContainsKey(key)) { var commentsHref = ncProps[key]; res.CommentsHref = string.IsNullOrEmpty(commentsHref) ? null : UriHelper.CombineUri(baseUri, new Uri(commentsHref, UriKind.Relative)); } key = XName.Get(WebDAVPropNameConstants.CommentsUnread, NsOc); if (ncProps.ContainsKey(key)) { var commentsUnread = ncProps[key]; res.CommentsUnread = string.IsNullOrEmpty(commentsUnread) ? 0 : long.Parse(commentsUnread); } key = XName.Get(WebDAVPropNameConstants.Favorite, NsOc); if (ncProps.ContainsKey(key)) { var favorite = ncProps[key]; res.IsFavorite = string.IsNullOrEmpty(favorite) ? false : string.CompareOrdinal(favorite, "1") == 0 ? true : false; } key = XName.Get(WebDAVPropNameConstants.FileId, NsOc); if (ncProps.ContainsKey(key)) { res.FileId = ncProps[key]; } key = XName.Get(WebDAVPropNameConstants.HasPreview, NsOc); if (ncProps.ContainsKey(key)) { var hasPreview = ncProps[key]; res.HasPreview = string.IsNullOrEmpty(hasPreview) ? false : string.CompareOrdinal(hasPreview, "1") == 0 ? true : false; } key = XName.Get(WebDAVPropNameConstants.Id, NsOc); if (ncProps.ContainsKey(key)) { res.Id = ncProps[key]; } key = XName.Get(WebDAVPropNameConstants.OwnerDisplayName, NsOc); if (ncProps.ContainsKey(key)) { res.OwnerDisplayName = ncProps[key]; } key = XName.Get(WebDAVPropNameConstants.OwnerId, NsOc); if (ncProps.ContainsKey(key)) { res.OwnderId = ncProps[key]; } key = XName.Get(WebDAVPropNameConstants.ShareTypes, NsOc); if (ncProps.ContainsKey(key)) { var shareType = ncProps[key]; if (!string.IsNullOrEmpty(shareType)) { res.ShareTypes = (OcsShareType)int.Parse(ncProps[key]); } } key = XName.Get(WebDAVPropNameConstants.Size, NsOc); if (ncProps.ContainsKey(key)) { var size = ncProps[key]; res.Size = string.IsNullOrEmpty(size) ? 0 : long.Parse(size); } } return(res); }