Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public CustomAccessControlStrategy(Func<string, bool> callback)
_callback = callback;
}

/// <inheritdoc cref="CustomAccessControlStrategy.IsAccessGranted(string, IFileSystemExtensionContainer)" />
public bool IsAccessGranted(string fullPath, IFileSystemExtensionContainer extensionContainer)
/// <inheritdoc cref="CustomAccessControlStrategy.IsAccessGranted(string, IFileSystemExtensibility)" />
public bool IsAccessGranted(string fullPath, IFileSystemExtensibility extensibility)
=> _callback(fullPath);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System;
using System.IO;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

Expand Down Expand Up @@ -38,6 +37,7 @@ public static TFileSystemInfo ThrowIfMissing<TFileSystemInfo>(

return fileSystemInfo;
}

public static IDirectoryInfo ThrowIfParentMissing(
this IDirectoryInfo fileSystemInfo)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

Expand All @@ -18,9 +17,9 @@ public static void CreateDirectory(this IDirectory directory,
{
IDirectoryInfo directoryInfo =
directory.FileSystem.DirectoryInfo.New(path);
IFileSystemExtensionContainer extensionContainer =
directoryInfo.ExtensionContainer;
if (extensionContainer.HasWrappedInstance(out DirectoryInfo? di))
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
if (extensibility.TryGetWrappedInstance(out DirectoryInfo? di))
{
di.Create(directorySecurity);
}
Expand All @@ -29,7 +28,7 @@ public static void CreateDirectory(this IDirectory directory,
_ = directorySecurity ?? throw new ArgumentNullException(nameof(directorySecurity));
directoryInfo.ThrowIfParentMissing();
directoryInfo.Create();
directoryInfo.ExtensionContainer.StoreMetadata(AccessControlHelpers.AccessControl,
directoryInfo.Extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
directorySecurity);
}
}
Expand All @@ -42,11 +41,11 @@ public static DirectorySecurity GetAccessControl(
IDirectoryInfo directoryInfo =
directory.FileSystem.DirectoryInfo.New(path);
directoryInfo.ThrowIfMissing();
IFileSystemExtensionContainer extensionContainer =
directoryInfo.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out DirectoryInfo? di)
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
return extensibility.TryGetWrappedInstance(out DirectoryInfo? di)
? di.GetAccessControl()
: extensionContainer.RetrieveMetadata<DirectorySecurity>(
: extensibility.RetrieveMetadata<DirectorySecurity>(
AccessControlHelpers.AccessControl) ?? new DirectorySecurity();
}

Expand All @@ -60,11 +59,11 @@ public static DirectorySecurity GetAccessControl(
IDirectoryInfo directoryInfo =
directory.FileSystem.DirectoryInfo.New(path);
directoryInfo.ThrowIfMissing();
IFileSystemExtensionContainer extensionContainer =
directoryInfo.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out DirectoryInfo? di)
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
return extensibility.TryGetWrappedInstance(out DirectoryInfo? di)
? di.GetAccessControl(includeSections)
: extensionContainer.RetrieveMetadata<DirectorySecurity>(
: extensibility.RetrieveMetadata<DirectorySecurity>(
AccessControlHelpers.AccessControl) ?? new DirectorySecurity();
}

Expand All @@ -76,15 +75,15 @@ public static void SetAccessControl(this IDirectory directory,
{
IDirectoryInfo directoryInfo =
directory.FileSystem.DirectoryInfo.New(path);
IFileSystemExtensionContainer extensionContainer =
directoryInfo.ExtensionContainer;
if (extensionContainer.HasWrappedInstance(out DirectoryInfo? di))
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
if (extensibility.TryGetWrappedInstance(out DirectoryInfo? di))
{
di.SetAccessControl(directorySecurity);
}
else
{
extensionContainer.StoreMetadata(AccessControlHelpers.AccessControl,
extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
directorySecurity);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

Expand All @@ -15,9 +14,9 @@ public static class DirectoryInfoAclExtensions
public static void Create(this IDirectoryInfo directoryInfo,
DirectorySecurity directorySecurity)
{
IFileSystemExtensionContainer extensionContainer =
directoryInfo.ExtensionContainer;
if (extensionContainer.HasWrappedInstance(out DirectoryInfo? di))
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
if (extensibility.TryGetWrappedInstance(out DirectoryInfo? di))
{
di.Create(directorySecurity);
}
Expand All @@ -26,7 +25,7 @@ public static void Create(this IDirectoryInfo directoryInfo,
_ = directorySecurity ?? throw new ArgumentNullException(nameof(directorySecurity));
directoryInfo.ThrowIfParentMissing();
directoryInfo.Create();
directoryInfo.ExtensionContainer.StoreMetadata(AccessControlHelpers.AccessControl,
directoryInfo.Extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
directorySecurity);
}
}
Expand All @@ -37,11 +36,11 @@ public static DirectorySecurity GetAccessControl(
this IDirectoryInfo directoryInfo)
{
directoryInfo.ThrowIfMissing();
IFileSystemExtensionContainer extensionContainer =
directoryInfo.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out DirectoryInfo? di)
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
return extensibility.TryGetWrappedInstance(out DirectoryInfo? di)
? di.GetAccessControl()
: extensionContainer.RetrieveMetadata<DirectorySecurity>(
: extensibility.RetrieveMetadata<DirectorySecurity>(
AccessControlHelpers.AccessControl) ?? new DirectorySecurity();
}

Expand All @@ -52,11 +51,11 @@ public static DirectorySecurity GetAccessControl(
AccessControlSections includeSections)
{
directoryInfo.ThrowIfMissing();
IFileSystemExtensionContainer extensionContainer =
directoryInfo.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out DirectoryInfo? di)
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
return extensibility.TryGetWrappedInstance(out DirectoryInfo? di)
? di.GetAccessControl(includeSections)
: extensionContainer.RetrieveMetadata<DirectorySecurity>(
: extensibility.RetrieveMetadata<DirectorySecurity>(
AccessControlHelpers.AccessControl) ?? new DirectorySecurity();
}

Expand All @@ -65,15 +64,15 @@ public static DirectorySecurity GetAccessControl(
public static void SetAccessControl(this IDirectoryInfo directoryInfo,
DirectorySecurity directorySecurity)
{
IFileSystemExtensionContainer extensionContainer =
directoryInfo.ExtensionContainer;
if (extensionContainer.HasWrappedInstance(out DirectoryInfo? di))
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
if (extensibility.TryGetWrappedInstance(out DirectoryInfo? di))
{
di.SetAccessControl(directorySecurity);
}
else
{
extensionContainer.StoreMetadata(AccessControlHelpers.AccessControl,
extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
directorySecurity);
}
}
Expand Down
25 changes: 12 additions & 13 deletions Source/Testably.Abstractions.AccessControl/FileAclExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

Expand All @@ -16,11 +15,11 @@ public static FileSecurity GetAccessControl(
{
IFileInfo fileInfo = file.FileSystem.FileInfo.New(path);
fileInfo.ThrowIfMissing();
IFileSystemExtensionContainer extensionContainer =
fileInfo.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out FileInfo? fi)
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
return extensibility.TryGetWrappedInstance(out FileInfo? fi)
? fi.GetAccessControl()
: extensionContainer.RetrieveMetadata<FileSecurity>(
: extensibility.RetrieveMetadata<FileSecurity>(
AccessControlHelpers.AccessControl) ?? new FileSecurity();
}

Expand All @@ -33,11 +32,11 @@ public static FileSecurity GetAccessControl(
{
IFileInfo fileInfo = file.FileSystem.FileInfo.New(path);
fileInfo.ThrowIfMissing();
IFileSystemExtensionContainer extensionContainer =
fileInfo.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out FileInfo? fi)
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
return extensibility.TryGetWrappedInstance(out FileInfo? fi)
? fi.GetAccessControl(includeSections)
: extensionContainer.RetrieveMetadata<FileSecurity>(
: extensibility.RetrieveMetadata<FileSecurity>(
AccessControlHelpers.AccessControl) ?? new FileSecurity();
}

Expand All @@ -48,15 +47,15 @@ public static void SetAccessControl(this IFile file,
FileSecurity fileSecurity)
{
IFileInfo fileInfo = file.FileSystem.FileInfo.New(path);
IFileSystemExtensionContainer extensionContainer =
fileInfo.ExtensionContainer;
if (extensionContainer.HasWrappedInstance(out FileInfo? fi))
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
if (extensibility.TryGetWrappedInstance(out FileInfo? fi))
{
fi.SetAccessControl(fileSecurity);
}
else
{
extensionContainer.StoreMetadata(AccessControlHelpers.AccessControl,
extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
fileSecurity);
}
}
Expand Down
25 changes: 12 additions & 13 deletions Source/Testably.Abstractions.AccessControl/FileInfoAclExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

Expand All @@ -15,11 +14,11 @@ public static FileSecurity GetAccessControl(
this IFileInfo fileInfo)
{
fileInfo.ThrowIfMissing();
IFileSystemExtensionContainer extensionContainer =
fileInfo.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out FileInfo? fi)
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
return extensibility.TryGetWrappedInstance(out FileInfo? fi)
? fi.GetAccessControl()
: extensionContainer.RetrieveMetadata<FileSecurity>(
: extensibility.RetrieveMetadata<FileSecurity>(
AccessControlHelpers.AccessControl) ?? new FileSecurity();
}

Expand All @@ -30,11 +29,11 @@ public static FileSecurity GetAccessControl(
AccessControlSections includeSections)
{
fileInfo.ThrowIfMissing();
IFileSystemExtensionContainer extensionContainer =
fileInfo.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out FileInfo? fi)
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
return extensibility.TryGetWrappedInstance(out FileInfo? fi)
? fi.GetAccessControl(includeSections)
: extensionContainer.RetrieveMetadata<FileSecurity>(
: extensibility.RetrieveMetadata<FileSecurity>(
AccessControlHelpers.AccessControl) ?? new FileSecurity();
}

Expand All @@ -43,15 +42,15 @@ public static FileSecurity GetAccessControl(
public static void SetAccessControl(this IFileInfo fileInfo,
FileSecurity fileSecurity)
{
IFileSystemExtensionContainer extensionContainer =
fileInfo.ExtensionContainer;
if (extensionContainer.HasWrappedInstance(out FileInfo? fi))
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
if (extensibility.TryGetWrappedInstance(out FileInfo? fi))
{
fi.SetAccessControl(fileSecurity);
}
else
{
extensionContainer.StoreMetadata(AccessControlHelpers.AccessControl,
extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
fileSecurity);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

Expand All @@ -13,11 +12,11 @@ public static class FileStreamAclExtensions
[SupportedOSPlatform("windows")]
public static FileSecurity GetAccessControl(this FileSystemStream fileStream)
{
IFileSystemExtensionContainer extensionContainer =
fileStream.ExtensionContainer;
return extensionContainer.HasWrappedInstance(out FileStream? fs)
IFileSystemExtensibility extensibility =
fileStream.Extensibility;
return extensibility.TryGetWrappedInstance(out FileStream? fs)
? fs.GetAccessControl()
: extensionContainer.RetrieveMetadata<FileSecurity>(
: extensibility.RetrieveMetadata<FileSecurity>(
AccessControlHelpers.AccessControl) ?? new FileSecurity();
}

Expand All @@ -26,15 +25,15 @@ public static FileSecurity GetAccessControl(this FileSystemStream fileStream)
public static void SetAccessControl(this FileSystemStream fileStream,
FileSecurity fileSecurity)
{
IFileSystemExtensionContainer extensionContainer =
fileStream.ExtensionContainer;
if (extensionContainer.HasWrappedInstance(out FileStream? fs))
IFileSystemExtensibility extensibility =
fileStream.Extensibility;
if (extensibility.TryGetWrappedInstance(out FileStream? fs))
{
fs.SetAccessControl(fileSecurity);
}
else
{
extensionContainer.StoreMetadata(AccessControlHelpers.AccessControl,
extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
fileSecurity);
}
}
Expand Down
1 change: 1 addition & 0 deletions Source/Testably.Abstractions.AccessControl/Usings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
#else
global using System.Runtime.Versioning;
#endif
global using Testably.Abstractions.FileSystem;
3 changes: 1 addition & 2 deletions Source/Testably.Abstractions.Compression/IZipArchive.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
using System;
using System.Collections.ObjectModel;
using System.IO.Compression;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

/// <inheritdoc cref="ZipArchive" />
public interface IZipArchive : IFileSystemExtensionPoint, IDisposable
public interface IZipArchive : IFileSystemEntity, IDisposable
{
#if FEATURE_ZIPFILE_NET7
/// <inheritdoc cref="ZipArchiveEntry.Comment" />
Expand Down
3 changes: 1 addition & 2 deletions Source/Testably.Abstractions.Compression/IZipArchiveEntry.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
using System;
using System.IO;
using System.IO.Compression;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

/// <inheritdoc cref="ZipArchiveEntry" />
public interface IZipArchiveEntry : IFileSystemExtensionPoint
public interface IZipArchiveEntry : IFileSystemEntity
{
/// <inheritdoc cref="ZipArchiveEntry.Archive" />
IZipArchive Archive { get; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
using System.IO;
using System.IO.Compression;
using System.Text;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions;

/// <inheritdoc cref="ZipArchive" />
public interface IZipArchiveFactory : IFileSystemExtensionPoint
public interface IZipArchiveFactory : IFileSystemEntity
{
/// <inheritdoc cref="ZipArchive(Stream)" />
IZipArchive New(Stream stream);
Expand Down
Loading