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 SaveFileAsync( IFormFile file, bool isTemp = false, bool isWidget = false, CancellationToken cancellationToken = default ); void DeleteFile( string fileFullPath, bool forceFileExists = true, Exception exception = null ); ICollection DeleteFiles( ICollection 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 HandleProfileImageSave( IFormFile file, CancellationToken cancellationToken = default ); Task HandleFileSave( IFormFile file, CancellationToken cancellationToken = default ); Task> HandleFilesSave( IFormFileCollection files, CancellationToken cancellationToken = default ); #endregion } }