public async Task <IEntry> FolderInfo(RemotePath path, int offset = 0, int limit = Int32.MaxValue, int depth = 1) { if (Credentials.IsAnonymous) { return(await AnonymousRepo.FolderInfo(path, offset, limit)); } if (!path.IsLink && depth > 1) { return(await FolderInfo(path, depth)); } FolderInfoResult datares; try { datares = await new FolderInfoRequest(HttpSettings, Authent, path, offset, limit) .MakeRequestAsync(); } catch (WebException e) when((e.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { return(null); } Cloud.ItemType itemType; //TODO: subject to refact, bad-bad-bad if (null == path.Link || path.Link.ItemType == Cloud.ItemType.Unknown) { itemType = datares.Body.Home == path.Path || WebDavPath.PathEquals("/" + datares.Body.Weblink, path.Path) ? Cloud.ItemType.Folder : Cloud.ItemType.File; } else { itemType = path.Link.ItemType; } var entry = itemType == Cloud.ItemType.File ? (IEntry)datares.ToFile( PublicBaseUrlDefault, home: WebDavPath.Parent(path.Path ?? string.Empty), ulink: path.Link, filename: path.Link == null ? WebDavPath.Name(path.Path) : path.Link.OriginalName, nameReplacement: path.Link?.IsLinkedToFileSystem ?? true ? WebDavPath.Name(path.Path) : null) : datares.ToFolder(PublicBaseUrlDefault, path.Path, path.Link); return(entry); }
public async Task <IEntry> FolderInfo(string path, Link ulink, int offset = 0, int limit = Int32.MaxValue, int depth = 1) { if (_creds.IsAnonymous) { return(await AnonymousRepo.FolderInfo(path, ulink, offset, limit)); } if (null == ulink && depth > 1) { return(await FolderInfo(path, depth)); } FolderInfoResult datares; try { datares = await new FolderInfoRequest(HttpSettings, Authent, ulink != null ? ulink.Href : path, ulink != null, offset, limit) .MakeRequestAsync(); } catch (WebException e) when((e.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { return(null); } MailRuCloud.ItemType itemType; //TODO: subject to refact, bad-bad-bad if (null == ulink || ulink.ItemType == MailRuCloud.ItemType.Unknown) { itemType = datares.body.home == path || WebDavPath.PathEquals("/" + datares.body.weblink, path) ? MailRuCloud.ItemType.Folder : MailRuCloud.ItemType.File; } else { itemType = ulink.ItemType; } var entry = itemType == MailRuCloud.ItemType.File ? (IEntry)datares.ToFile( home: WebDavPath.Parent(path), ulink: ulink, filename: ulink == null ? WebDavPath.Name(path) : ulink.OriginalName, nameReplacement: ulink?.IsLinkedToFileSystem ?? true ? WebDavPath.Name(path) : null) : datares.ToFolder(path, ulink); return(entry); }