Beispiel #1
0
 /// <summary>
 /// Initializes a new instance of the LocalDirectoryReferenceInfo class.
 /// </summary>
 /// <param name="directory">The directory instance.</param>
 /// <param name="parent">The parent folder.</param>
 public LocalDirectoryReferenceInfo(DirectoryInfo directory, LocalDirectoryReferenceInfo parent = null) : base(directory)
 {
     this.parent = parent;
     if (directory == null)
     {
         return;
     }
     try
     {
         Creation = directory.CreationTime;
     }
     catch (IOException)
     {
     }
     catch (NotSupportedException)
     {
     }
     catch (InvalidOperationException)
     {
     }
     catch (UnauthorizedAccessException)
     {
     }
     catch (SecurityException)
     {
     }
     catch (ExternalException)
     {
     }
 }
Beispiel #2
0
 /// <summary>
 /// Tests if supports the directory reference.
 /// </summary>
 /// <param name="directory">The directory to load sub-directories or files.</param>
 /// <returns>true if supports; otherwise, false.</returns>
 bool IFileReferenceClient.Test(IFileContainerReferenceInfo directory)
 {
     if (directory is not T info)
     {
         return(false);
     }
     return(Test(info));
 }
Beispiel #3
0
 /// <summary>
 /// Gets the parent.
 /// </summary>
 /// <param name="directory">The directory to get parent.</param>
 /// <return>The parent information; or null, if no parent.</return>
 async Task <IFileContainerReferenceInfo> IFileReferenceClient.GetParentAsync(IFileContainerReferenceInfo directory)
 {
     if (directory is not T info)
     {
         return(null);
     }
     return(await GetParentAsync(info));
 }
Beispiel #4
0
    /// <summary>
    /// Initializes a new instance of the ZipArchiveEntryReferenceInfo class.
    /// </summary>
    /// <param name="file">The file item.</param>
    /// <param name="parent">The parent folder.</param>
    internal ZipArchiveEntryReferenceInfo(ZipArchiveEntry file, IFileContainerReferenceInfo parent) : base(parent, file)
    {
        Name             = file.Name;
        Exists           = true;
        LastModification = file.LastWriteTime.DateTime;
        Size             = file.Length;
        CompressedSize   = file.CompressedLength;
#if !NETSTANDARD
        Crc32 = file.Crc32;
#endif
    }
Beispiel #5
0
    internal static Task <IReadOnlyList <IFileReferenceInfo> > GetFilesAsync(DirectoryInfo dir, LocalDirectoryReferenceInfo parent)
    {
        if (dir == null)
        {
            return(Task.FromResult <IReadOnlyList <IFileReferenceInfo> >(new List <IFileReferenceInfo>()));
        }
        if (parent == null)
        {
            parent = new LocalDirectoryReferenceInfo(dir);
        }
        var col = dir.EnumerateFiles()?.Where(ele => !ele.Attributes.HasFlag(FileAttributes.Hidden))?.Select(ele => CreateFileReferenceInfo(ele, parent) as IFileReferenceInfo)?.ToList() ?? new List <IFileReferenceInfo>();

        return(Task.FromResult <IReadOnlyList <IFileReferenceInfo> >(col));
    }
Beispiel #6
0
    /// <summary>
    /// Refreshes the state of the object.
    /// </summary>
    public void Refresh()
    {
        var source = Source;

        if (source == null)
        {
            return;
        }
        try
        {
            source.Refresh();
            Name             = source.Name;
            Creation         = source.CreationTime;
            LastModification = source.LastWriteTime;
            if (GetParent().Source != Source.Parent)
            {
                parent = null;
                GetParent();
            }
        }
        catch (IOException)
        {
        }
        catch (NotSupportedException)
        {
        }
        catch (InvalidOperationException)
        {
        }
        catch (UnauthorizedAccessException)
        {
        }
        catch (SecurityException)
        {
        }
        catch (ExternalException)
        {
        }
    }
Beispiel #7
0
    /// <summary>
    /// Gets the parent.
    /// </summary>
    private IFileContainerReferenceInfo GetParentInternal()
    {
        if (parent != null)
        {
            return(parent);
        }
        try
        {
            var dir = Source.Parent;
            if (dir == null || !dir.Exists)
            {
                return(null);
            }
            parent = new LocalDirectoryReferenceInfo(dir);
        }
        catch (IOException)
        {
        }
        catch (NotSupportedException)
        {
        }
        catch (InvalidOperationException)
        {
        }
        catch (UnauthorizedAccessException)
        {
        }
        catch (SecurityException)
        {
        }
        catch (ExternalException)
        {
        }

        return(parent);
    }
Beispiel #8
0
 /// <summary>
 /// Sets the parent.
 /// </summary>
 /// <param name="info">The parent.</param>
 protected virtual void SetParent(IFileContainerReferenceInfo info)
 => parent = info;
Beispiel #9
0
 /// <summary>
 /// Initializes a new instance of the BaseFileReferenceInfo class.
 /// </summary>
 /// <param name="parent">The parent directory.</param>
 /// <param name="source">The instance source for reference.</param>
 protected BaseFileReferenceInfo(IFileContainerReferenceInfo parent, object source) : base(source)
 {
     SetParent(parent);
 }
Beispiel #10
0
 /// <summary>
 /// Initializes a new instance of the LocalDirectoryReferenceInfo class.
 /// </summary>
 /// <param name="directory">The directory instance.</param>
 /// <param name="parent">The parent folder.</param>
 public LocalDirectoryReferenceInfo(DirectoryInfo directory, LocalPackageFileReferenceInfo parent) : base(directory)
 {
     this.parent = parent;
 }
Beispiel #11
0
 /// <summary>
 /// Lists all files.
 /// </summary>
 /// <param name="directory">The directory to load sub-directories or files.</param>
 /// <returns>The file collection.</returns>
 async Task <IReadOnlyList <IFileReferenceInfo> > IFileReferenceClient.GetFilesAsync(IFileContainerReferenceInfo directory)
 {
     if (directory is not T info)
     {
         return(new List <IFileReferenceInfo>());
     }
     return(await GetFilesAsync(info) ?? new List <IFileReferenceInfo>());
 }
Beispiel #12
0
    /// <summary>
    /// Lists all sub-directories.
    /// </summary>
    /// <param name="directory">The directory to load sub-directories or files.</param>
    /// <returns>The directory collection.</returns>
    async Task <IReadOnlyList <IDirectoryReferenceInfo> > IFileReferenceClient.GetDirectoriesAsync(IFileContainerReferenceInfo directory)
    {
        var col = new List <IDirectoryReferenceInfo>();

        if (directory is not T info)
        {
            return(col);
        }
        var list = await GetDirectoriesAsync(info);

        if (list == null)
        {
            return(col);
        }
        foreach (var item in list)
        {
            col.Add(item);
        }

        return(col);
    }