Made a storage provider interface and both classic and avalonia impl.

This commit is contained in:
Creeper Lv
2026-01-04 05:35:39 +11:00
parent f77985c31a
commit 814e601870
8 changed files with 203 additions and 1 deletions

View File

@@ -0,0 +1,36 @@
namespace Progrart.Core.Storage
{
public class ClassicStorageProvider : IStorageProvider
{
public DirectoryInfo BaseDirectory;
public ClassicStorageProvider(DirectoryInfo baseDirectory)
{
BaseDirectory = baseDirectory;
}
public async Task<Stream?> TryOpenRead(string path)
{
try
{
return File.OpenRead(Path.Combine(BaseDirectory.FullName, path));
}
catch (Exception)
{
return null;
}
}
public async Task<Stream?> TryOpenWrite(string path)
{
try
{
return File.OpenWrite(Path.Combine(BaseDirectory.FullName, path));
}
catch (Exception)
{
return null;
}
}
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Progrart.Core.Storage
{
public interface IStorageProvider
{
Task<Stream?> TryOpenRead(string path);
Task<Stream?> TryOpenWrite(string path);
}
}