Esempio n. 1
0
 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,
     });
 }
Esempio n. 2
0
        // переделать через 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);
        }
Esempio n. 3
0
 public static NetworkItemInfo ToNetworkItemInfo(this WebDavSessionItem item)
 {
     return(ToNetworkItemInfo(item, null, null, null, false));
 }
Esempio n. 4
0
        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);
        }