2026-01-04 05:35:39 +11:00
|
|
|
|
namespace Progrart.Core.Storage
|
|
|
|
|
|
{
|
2026-01-13 03:33:49 +11:00
|
|
|
|
public class ClassicStorageProvider : IStorageProvider
|
|
|
|
|
|
{
|
|
|
|
|
|
public DirectoryInfo BaseDirectory;
|
2026-01-04 05:35:39 +11:00
|
|
|
|
|
2026-01-13 03:33:49 +11:00
|
|
|
|
public ClassicStorageProvider(DirectoryInfo baseDirectory)
|
|
|
|
|
|
{
|
|
|
|
|
|
BaseDirectory = baseDirectory;
|
|
|
|
|
|
}
|
2026-01-04 05:35:39 +11:00
|
|
|
|
|
2026-01-13 03:33:49 +11:00
|
|
|
|
public async Task<Stream?> TryOpenRead(string path)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
2026-01-04 05:35:39 +11:00
|
|
|
|
return File.OpenRead(Path.Combine(BaseDirectory.FullName, path));
|
|
|
|
|
|
}
|
2026-01-13 03:33:49 +11:00
|
|
|
|
catch (Exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-04 05:35:39 +11:00
|
|
|
|
|
2026-01-13 03:33:49 +11:00
|
|
|
|
public async Task<Stream?> TryOpenWrite(string path)
|
2026-01-04 05:35:39 +11:00
|
|
|
|
{
|
2026-01-13 03:33:49 +11:00
|
|
|
|
try
|
2026-01-04 05:35:39 +11:00
|
|
|
|
{
|
2026-01-13 03:33:49 +11:00
|
|
|
|
FileInfo fi = new FileInfo(Path.Combine(BaseDirectory.FullName, path));
|
|
|
|
|
|
var di = fi.Directory;
|
|
|
|
|
|
if (di is not null)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!di.Exists)
|
|
|
|
|
|
di.Create();
|
|
|
|
|
|
}
|
2026-01-04 05:35:39 +11:00
|
|
|
|
return File.OpenWrite(Path.Combine(BaseDirectory.FullName, path));
|
|
|
|
|
|
}
|
2026-01-13 03:33:49 +11:00
|
|
|
|
catch (Exception)
|
2026-01-04 05:35:39 +11:00
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-13 03:33:49 +11:00
|
|
|
|
}
|
2026-01-04 05:35:39 +11:00
|
|
|
|
}
|