using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; namespace gehGassi.Core.Interfaces { /// /// Schnittstellenbeschreibung für einen Service der die Verwaltung von Dateien ermöglicht /// public interface IFileService { /// /// Speichern einer Datei in einen Container /// /// Name des Containers /// Dateiname (inkl. Pfad, wenn gewünscht) /// Datei als Byte-Array /// Überschreiben vorhandener Daten /// Absoluter Dateiname Task StoreAsync(string containerName, string filename, byte[] file, bool overwrite = true); /// /// Speichern einer Datei in einen Container /// /// Name des Containers /// Dateiname (inkl. Pfad, wenn gewünscht) /// Datei als Stream /// Überschreiben vorhandener Daten /// Absoluter Dateiname Task StoreAsync(string containerName, string filename, Stream fileStream, bool overwrite = true); /// /// Umbenennen einer Datei in einem Container /// /// Name des Containers /// Dateiname (inkl. Pfad, wenn gewünscht) /// Neuer Dateiname Task RenameAsync(string containerName, string filename, string newFilename); /// /// Gibt eine Datei zurück /// /// Name des Containers /// Dateiname (inkl. Pfad, wenn gewünscht) /// Datei als Byte-Array Task GetAsync(string containerName, string filename); /// /// Gibt eine Datei zurück /// /// Name des Containers /// Dateiname (inkl. Pfad, wenn gewünscht) /// Datei als Stream Task GetAsStreamAsync(string containerName, string filename); /// /// Löschen einer Datei in einem Container /// /// Name des Containers /// Dateiname (inkl. Pfad, wenn gewünscht) Task DeleteAsync(string containerName, string filename); /// /// Gibt eine Liste aller Dateien eines Containers zurück die sich in einem Directory befinden /// /// Name des Containers /// Verzeichnis. /// Teil eines Dateinamens für die suche /// Liste von Dateien Task> ListFilesAsync(string containerName, string directory = "", string fileNamePart = ""); /// /// Gibt eine Liste aller Verzeichnise zurück die sich im Container befindne /// /// Name des Containers /// wenn angegeben, wird von dem Verzeihnis als root ausgegangen /// Task> ListDirectoriesAsync(string containerName, string root = ""); /// /// Koperien von Dateinen eines Containers in einen anderen /// /// Quellcontainer /// Quellpfad /// ZielContainer /// ZielPfad Task CopyFilesAsync(string sourceContainer, string sourceDirectory, string targetContainer, string targetDirectory); /// /// Koperien von Dateien eines Pfades in einen anderen /// /// Name des Containers /// Quellpfad /// ZielPfad Task CopyFilesAsync(string containerName, string sourceDirectory, string targetDirectory); /// /// Verschieben von Dateien eines Containers in einen anderen /// /// Quellcontainer /// Quellpfad /// ZielContainer /// ZielPfad Task MoveFilesAsync(string sourceContainer, string sourceDirectory, string targetContainer, string targetDirectory); /// /// Verschieben von Dateien eines Pfades in einen anderen /// /// Name des Containers /// Quellpfad /// ZielPfad Task MoveFilesAsync(string containerName, string sourceDirectory, string targetDirectory); /// /// Löschen des Inhalts eines Verzeichnises /// /// Name des Containers /// Verzeichnis /// Optional: Dateinamen Wildcard Task ClearDirectoryAsync(string containerName, string directory, string fileNamePart = ""); /// /// Löscht einen Container und den Inhalt /// /// Name des Containers Task DeleteContainerAsync(string containerName); /// /// Löscht Dateien aus einem Ordner auf welche /// vor dem Datum das letzte mal zugegriffen wurde /// /// Name des Containers /// Verzeichnis /// Datum Task DeleteOldFilesAsync(string containerName, string directory, DateTimeOffset date); /// /// Gibt den reinen Dateinamen eines Files zurück (Ohne Directories usw) /// /// Dateiname /// Reiner Dateiname string GetFlatFilename(string fileName); } }