48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using MareSynchronos.API;
 | |
| 
 | |
| namespace MareSynchronos.WebAPI.Utils;
 | |
| 
 | |
| public abstract class FileTransfer
 | |
| {
 | |
|     protected readonly ITransferFileDto TransferDto;
 | |
| 
 | |
|     protected FileTransfer(ITransferFileDto transferDto)
 | |
|     {
 | |
|         TransferDto = transferDto;
 | |
|     }
 | |
| 
 | |
|     public string ForbiddenBy => TransferDto.ForbiddenBy;
 | |
|     public long Transferred { get; set; } = 0;
 | |
|     public abstract long Total { get; set; }
 | |
|     public string Hash => TransferDto.Hash;
 | |
|     public bool IsInTransfer => Transferred != Total && Transferred > 0;
 | |
|     public bool IsTransferred => Transferred == Total;
 | |
|     public virtual bool CanBeTransferred => !TransferDto.IsForbidden && (TransferDto is not DownloadFileDto dto || dto.FileExists);
 | |
|     public bool IsForbidden => TransferDto.IsForbidden;
 | |
| 
 | |
|     public override string ToString()
 | |
|     {
 | |
|         return Hash;
 | |
|     }
 | |
| }
 | |
| 
 | |
| public class UploadFileTransfer : FileTransfer
 | |
| {
 | |
|     public UploadFileTransfer(UploadFileDto dto) : base(dto) { }
 | |
|     public override long Total { get; set; }
 | |
|     public string LocalFile { get; set; } = string.Empty;
 | |
| }
 | |
| 
 | |
| public class DownloadFileTransfer : FileTransfer
 | |
| {
 | |
|     private DownloadFileDto Dto => (DownloadFileDto)TransferDto;
 | |
|     public DownloadFileTransfer(DownloadFileDto dto) : base(dto) { }
 | |
| 
 | |
|     public override long Total
 | |
|     {
 | |
|         set { }
 | |
|         get => Dto.Size;
 | |
|     }
 | |
| 
 | |
|     public override bool CanBeTransferred => Dto.FileExists && !Dto.IsForbidden && Dto.Size > 0;
 | |
| } | 
