Skip to content

Commit 817c65b

Browse files
add RememberRemoteState and MaxAge properties to FileSyncJobOptions
1 parent a019a6e commit 817c65b

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

FileSyncLibNet/FileSyncJob/FileSyncJobOptions.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Microsoft.Extensions.Logging;
44
using System;
55
using System.Collections.Generic;
6+
using System.IO;
67
using System.Net;
78

89
namespace FileSyncLibNet.FileSyncJob
@@ -13,11 +14,25 @@ public class FileSyncJobOptions : FileJobOptionsBase, IFileSyncJobOptions
1314
public bool SyncDeleted { get; set; } = false;
1415
public bool DeleteSourceAfterBackup { get; set; } = false;
1516
public bool RememberLastSync { get; set; } = true;
17+
public bool RememberRemoteState { get; set; } = false;
18+
public TimeSpan MaxAge { get; set; }
1619

1720
public FileSyncJobOptions()
1821
{
1922

2023
}
21-
24+
public override string GetHashedName()
25+
{
26+
string readableInfo = $"{Path.GetFileName(SourcePath.TrimEnd(Path.DirectorySeparatorChar))}_{Path.GetFileName(DestinationPath.TrimEnd(Path.DirectorySeparatorChar))}_{Interval.TotalMinutes}min";
27+
string allProperties = $"{SourcePath}_{DestinationPath}_{SearchPattern}_{Interval}_{Recursive}_{string.Join(",", Subfolders)}";
28+
string hash;
29+
using (var sha256 = System.Security.Cryptography.SHA256.Create())
30+
{
31+
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(allProperties);
32+
byte[] hashBytes = sha256.ComputeHash(bytes);
33+
hash = BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
34+
}
35+
return $"{readableInfo}_{hash}";
36+
}
2237
}
2338
}

FileSyncLibNet/FileSyncJob/FileSyncJobOptionsBuilder.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ public IFileSyncJobOptionsBuilderSetProperties RememberLastSync(bool rememberLas
5858
jobOptions.RememberLastSync = rememberLastSync;
5959
return this;
6060
}
61+
public IFileSyncJobOptionsBuilderSetProperties RememberRemoteState(bool rememberRemoteState)
62+
{
63+
jobOptions.RememberRemoteState = rememberRemoteState;
64+
return this;
65+
}
66+
public IFileSyncJobOptionsBuilderSetProperties WithMaxAge(TimeSpan maxAge)
67+
{
68+
jobOptions.MaxAge = maxAge;
69+
return this;
70+
}
6171

6272
public IFileSyncJobOptionsBuilderSetProperties WithCredentials(string username, string password)
6373
{

FileSyncLibNet/FileSyncJob/IFileSyncJobOptions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using FileSyncLibNet.Commons;
2+
using System;
23

34
namespace FileSyncLibNet.FileSyncJob
45
{
@@ -8,5 +9,7 @@ public interface IFileSyncJobOptions : IFileJobOptions
89
bool DeleteSourceAfterBackup { get; set; }
910
bool SyncDeleted { get; set; }
1011
bool RememberLastSync { get; set; }
12+
bool RememberRemoteState { get; set; }
13+
TimeSpan MaxAge { get; set; }
1114
}
1215
}

0 commit comments

Comments
 (0)