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