IConnectorFileProvider.cs•3.81 kB
using Api.DigitalPages.Interfaces.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
namespace Api.DigitalPages.Interfaces.Connector
{
public interface IConnectorFileProvider :
ISystemConnectorBasePagedFlow<IFileVersion, FileVersionOptions>,
ISystemConnectorBaseCrudFlowV2<IFile, FileOptions>,
ISystemConnectorBaseCrudFlowV2<IFileAuthorization, IFile, FileAuthorizationOptions>,
ISystemConnectorBaseCrudFlowV3<IFileVersion, FileVersionOptions>,
IConnectorContextRequired,
IConnectorDetail
{
Task<IFile> SyncFiles(string path);
Task<IFileVersion> RegisterVersion(IFile file, StreamData data, bool partial = false);
Task<IFileVersion> RegisterVersion(Guid fileUid, StreamData data, bool partial = false);
Task<IFileVersion> UpdateVersion(IFileVersion fileVersion, List<StreamData> datas);
Task<IFileVersion> AppendVersion(IFileVersion fileVersion, Stream data, long? startindex = null);
Task<StreamResult> GetVersion(IFileVersion fileVersion, string internalFile = null);
Task<StreamResult> GetVersion(Guid versionUid, string internalFile = null);
Task<Stream> WriteVersion(IFileVersion fileVersion);
}
public class FileOptions : IBaseCrudOptions
{
public List<Guid> FilterUid { get; set; }
public IBaseAuthorizationFilter FilterAuthorizations { get; set; }
public List<Guid> FilterEntities { get; set; }
public List<FileVersionState> FilterStates { get; set; }
public bool IncludeAuthorizations { get; set; }
public bool IncludeMatchAuthorizations { get; set; }
public bool IncludeVersions { get; set; }
public bool IncludeProperties { get; set; }
public bool IncludeEntities { get; set; }
}
public class FileAuthorizationOptions : IBaseCrudOptions
{
public List<Guid> FilterUid { get; set; }
public bool IncludeReferences { get; set; }
public IBaseAuthorizationFilter FilterFileAuthorizations { get; set; }
}
public class FileVersionOptions : IBaseCrudOptions
{
public List<Guid> FilterUid { get; set; }
public List<Guid> FilterFileUid { get; set; }
public List<FileVersionState> FilterState { get; set; }
public List<string> FilterMimeTypes { get; set; }
public List<string> FilterProperties { get; set; }
public List<Guid> FilterEntities { get; set; }
public IBaseAuthorizationFilter FilterAuthorizations { get; set; }
public bool IncludeAuthorizations { get; set; }
public bool IncludeMatchAuthorizations { get; set; }
public bool IncludeProperties { get; set; }
public bool IncludeEntities { get; set; }
public bool IncludeFile { get; set; }
}
public class StreamResult : StreamData
{
public string Error { get; }
public StreamResult(string error) { this.Error = error; }
public StreamResult(Stream stream, string mimeType, string fileName, long size) : base(stream, mimeType, fileName, size) { }
}
public class StreamData : IDisposable
{
public Stream Stream { get; private set; }
public string MimeType { get; }
public string FileName { get; }
public long Size { get; }
public StreamData() { }
public StreamData(Stream stream, string mimeType, string fileName, long size)
{
this.Stream = stream;
this.MimeType = mimeType;
this.FileName = fileName;
this.Size = size;
}
public void Dispose()
{
Stream?.Dispose();
Stream = Stream.Null;
}
}
}