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