using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; namespace gehGassi.Core.Interfaces { /// /// Schnittstellenbeschreibung für einen Service der die Verwaltung von Dateien als share ermöglicht. /// Alle Ordner und Dateinamen sind relativ anzugeben. /// z.B. test/Ordner1/order2 /// z.B. test/Ordner1/test.png /// public interface IFileShareService { /// /// Auflisten der Ordner in einem Ordner /// /// Name des Shares /// Ordner /// Liste der Ordner im Share List ListFolders(string shareName, string folder); /// /// Gibt Informationen über einen Ordner zurück /// /// Name des Shares /// Ordner /// Ordner oder null FolderResult GetFolderInfo(string shareName, string folder); /// /// Auflisten der Dateien in einem Ordner /// /// Name des Shares /// Ordner /// Liste der Dateien im Ordner List ListFiles(string shareName, string folder); /// /// Gibt Informationen über eine Datei zurück /// /// Name des Shares /// Dateiname relativ /// FileInfo oder null FileResult GetFileInfo(string shareName, string fileName); /// /// Auflisten der Dateien und Ordner in einem Ordner /// /// Name des Shares /// Ordner /// Liste Dateien und Liste Ordner (List, List) ListFilesAndFolders(string shareName, string folder); /// /// Anlegen eines Ordners. /// /// Name des Shares /// Neuer Ordner /// true wenn erfolgreich, false sonst bool CreateFolder(string shareName, string newfolderName); /// /// Speichern einer Datei /// /// Name des Shares /// Dateiname mit Ordnern relativ /// Datei /// true wenn überschrieben werden soll, false sonst /// true wenn erfolgreich, false sonst bool Store(string shareName, string fileName, byte[] file, bool overwrite = false); /// /// Holt eine Datei /// /// Name des Shares /// Dateiname mit Ordnern relativ /// Datei oder null, wenn nicht gefunden byte[] Get(string shareName, string fileName); /// /// Holt eine Datei als Stream /// /// Name des Shares /// Dateiname mit Ordnern relativ /// Stream oder null, wenn nicht gefunden Stream GetStream(string shareName, string fileName); /// /// Holt eine Datei als Stream /// /// Name des Shares /// Dateiname mit Ordnern relativ /// Wo soll gestartet werden /// Ende /// Stream oder null, wenn nicht gefunden Stream GetStream(string shareName, string fileName, long start, long end); /// /// Umbenennen einer Datei /// /// Name des Shares /// Aktueller Dateiname /// Neuer Dateiname /// Soll eine Kopie gemacht werden? Wenn nicht wird die Quelldatei gelöscht /// true wenn erfolgreich, false sonst bool RenameFile(string shareName, string fileName, string newFileName, bool copy); /// /// Umbenennen eines Ordners /// /// Name des Shares /// Aktueller Ordnername /// Neuer Ordnername /// Soll eine Kopie gemacht werden? Wenn nicht wird der QuellOrdner gelöscht /// true wenn erfolgreich, false sonst bool RenameFolder(string shareName, string folder, string newFolder, bool copy); /// /// Umbenennen eines Ordners - Ohne TransferManager /// /// Name des Shares /// Aktueller Ordnername /// Neuer Ordnername /// Soll eine Kopie gemacht werden? Wenn nicht wird der QuellOrdner gelöscht /// true wenn erfolgreich, false sonst bool RenameFolderEx(string shareName, string folder, string newFolder, bool copy); /// /// Löschen einer Datei /// /// Name des Shares /// Dateiname mit Ordnern relativ /// true wenn erfolgreich, false sonst bool DeleteFile(string shareName, string fileName); /// /// Löschen eines Ordners /// /// Name des Shares /// Ordner /// true wenn erfolgreich, false sonst bool DeleteFolder(string shareName, string folder); /// /// Löschen eines Shares /// /// Name des Shares /// true wenn erfolgreich, false sonst bool DeleteShare(string shareName); /// /// Gibt die größe des Ordners (Dateien) als byte zurück /// /// Name des Shares /// Ordner /// Liste der Ordner im Share long GetFolderSize(string shareName, string folder); } /// /// Repräsentiert einen Ordner mit Infos /// [ExcludeFromCodeCoverage] public class FolderResult { /// /// Name /// public string Name { get; set; } /// /// Datum letzte Bearbeitung /// public DateTimeOffset? LastModified { get; set; } /// /// Datum Erstellung /// public DateTimeOffset? Created { get; set; } /// /// Hat Unterordner? /// public bool HasSubfolders { get; set; } } /// /// Repräsentiert eine Datei mit Info /// [ExcludeFromCodeCoverage] public class FileResult { /// /// Name der Datei /// public string Name { get; set; } /// /// Datum letzte Bearbeitung /// public DateTimeOffset? LastModified { get; set; } /// /// Datum Erstellung /// public DateTimeOffset? Created { get; set; } /// /// größe der Datei /// public long Size { get; set; } } }