using System; using System.Collections.Generic; 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); #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 ); 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); Task CreateThumbnail (string fileName); Task HandleProfileImageSave (IFormFile file); Task HandleFileSave (IFormFile file); Task> HandleFilesSave (IFormFileCollection files); #endregion } }