Files
2026-05-28 19:15:14 +03:30

121 lines
3.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.FileProviders;
using xCommons.Constants;
using xModels.Dtos;
using xStorageService.Constants;
using xStorageService.Helpers;
using xStorageService.Models;
namespace xStorageService.Interfaces
{
public partial interface IXStorageProvider
{
XStorageConfiguration Configuration { get; }
XStorageHelper StorageHelper { get; }
IFileProvider FileProvider { get; }
IXThumbnailProvider ThumbnailProvider { get; }
//
#region Special Folders Path Getter (s) ...
string GetStorageFolderPath();
string GetTempFolderPath();
string GetThumbFolderPath();
string GetUploadsFolderPath();
string GetWidgetsFolderPath();
string GetImageFolderPath();
string GetAudioFolderPath();
string GetVideoFolderPath();
string GetDocumentFolderPath();
string FilePathResolver(string fullPath);
string ConvertToFileUrl(string fullPath);
#endregion
//
#region Prepare Storage Structure ...
void Prepare();
#endregion
//
#region Validators ...
bool IsFolderExists(string path);
bool IsFileExists(string filePath);
bool IsSupportThumb(string fileName);
bool IsSupportThumb(XFileType type);
void ValidateFileExists(string filePath);
void ValidateFileModel(XFileDto file);
void ValidateFile(IFormFile file);
void ValidateProfileImage(IFormFile file);
#endregion
//
#region Generators ...
string NewFileName();
string GenerateThumbName(string fileName);
string GetNewFileName(string fileName);
#endregion
//
#region Tools Actions ...
string GetFileExtension(string fileName);
string GetFileNameWithoutExtension(string fileName);
FileExtensions GetFileExtensionType(string fileName);
XFileType GetFileType(string fileName);
XFileType GetFileType(FileExtensions fileExtension);
string GetThumbnailFileFullPath(string thumFileName);
string GetRelatedThumbnailFullPath(string fileName);
string GetFileTypeFolderPath(XFileType type);
string GetFileFolderPath(
string fileName,
bool isTemp = false,
bool isWidget = false
);
string GetFileFullPath(
string fileName,
bool isTemp = false,
bool isWidget = false
);
Task<string> SaveFileAsync(
IFormFile file,
bool isTemp = false,
bool isWidget = false,
CancellationToken cancellationToken = default
);
void DeleteFile(
string fileFullPath,
bool forceFileExists = true,
Exception exception = null
);
ICollection<string> DeleteFiles(
ICollection<string> fileFullPaths,
bool forceFileExists = true,
Exception exception = null
);
// Task CreateThumbnail (XFile file);
Task CreateThumbnail(
XFileDto file,
CancellationToken cancellationToken = default
);
Task CreateThumbnail(
string fileName,
CancellationToken cancellationToken = default
);
Task<XFileResult> HandleProfileImageSave(
IFormFile file,
CancellationToken cancellationToken = default
);
Task<XFileResult> HandleFileSave(
IFormFile file,
CancellationToken cancellationToken = default
);
Task<IEnumerable<XFileResult>> HandleFilesSave(
IFormFileCollection files,
CancellationToken cancellationToken = default
);
#endregion
}
}