namespace Mizuki.Services;
///
/// The service responsible for managing file uploads.
///
public class DriveService
{
///
/// The path to the uploads folder.
///
private const string UploadsFolder = "./uploads";
///
/// The drive service.
///
public DriveService()
{
if (!Directory.Exists(UploadsFolder))
Directory.CreateDirectory(UploadsFolder);
}
///
/// Opens a file by its filename.
///
/// Its filename.
/// The file's stream.
public Stream? OpenFileByFilename(string filename)
{
var actualFilename = Path.GetFileName(filename);
var path = Path.Combine(UploadsFolder, actualFilename);
if (!File.Exists(path))
return null;
return File.OpenRead(path);
}
///
/// Deletes a file by its filename.
///
/// Its filename.
public void DeleteFileByFilename(string filename)
{
var actualFilename = Path.GetFileName(filename);
var path = Path.Combine(UploadsFolder, actualFilename);
if (!File.Exists(path))
return;
File.Delete(path);
}
///
/// Saves a file with the given filename.
///
/// The filename.
/// The file stream.
public void SaveFileByFilename(string filename, Stream fileStream)
{
var actualFilename = Path.GetFileName(filename);
var path = Path.Combine(UploadsFolder, actualFilename);
using var writeStream = File.OpenWrite(path);
fileStream.CopyTo(writeStream);
}
}