From e830f113f55bb915194d13e7f81d4fe23fcf3abf Mon Sep 17 00:00:00 2001 From: justerzhu Date: Sat, 7 Sep 2024 12:34:25 +0800 Subject: [PATCH 1/3] feature: add bowl.jpeg --- imgs/bowl.jpeg | Bin 0 -> 102561 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 imgs/bowl.jpeg diff --git a/imgs/bowl.jpeg b/imgs/bowl.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b099e2163483804fb316c5e3175e91529696f139 GIT binary patch literal 102561 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

{4_8fyCvcxW3#L6D4x5C0$<+C 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%0AM)@ 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�dJFgX%?Vuw$r>S4p=A6%;rP}mFfpM!f> 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 literal 0 HcmV?d00001 From c438a89aa7e7c00fd5ec6e4a18a1263a0119dea1 Mon Sep 17 00:00:00 2001 From: justerzhu Date: Tue, 10 Sep 2024 22:07:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E7=AE=A1?= =?UTF-8?q?=E9=81=93=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../File/ComparisonResult.cs | 14 +++ .../File/GeneralFileManager.cs | 17 ++-- .../Internal/Bootstrap/AbstractBootstrap.cs | 98 +++++-------------- .../Internal/Bootstrap/UpdateOption.cs | 26 +++++ .../Internal/Pipeline/IMiddleware.cs | 2 +- .../Internal/Pipeline/PipelineBuilder.cs | 8 +- .../Internal/Pipeline/PipelineContext.cs | 32 ++++++ .../Internal/Strategy/AbstractStrategy.cs | 4 +- .../Internal/Strategy/IStrategy.cs | 3 +- .../Shared/Object/Packet.cs | 11 +-- 10 files changed, 116 insertions(+), 99 deletions(-) create mode 100644 src/c#/GeneralUpdate.Common/Internal/Pipeline/PipelineContext.cs diff --git a/src/c#/GeneralUpdate.Common/File/ComparisonResult.cs b/src/c#/GeneralUpdate.Common/File/ComparisonResult.cs index 6a8d165a..37ab0f8c 100644 --- a/src/c#/GeneralUpdate.Common/File/ComparisonResult.cs +++ b/src/c#/GeneralUpdate.Common/File/ComparisonResult.cs @@ -2,14 +2,28 @@ namespace GeneralUpdate.Common; +///

+/// Result of a comparison between two directories. +/// public class ComparisonResult { private readonly List _uniqueToA = new List(); private readonly List _uniqueToB = new List(); private readonly List _differentFiles = new List(); + /// + /// List of files that are unique to A. + /// public IReadOnlyList UniqueToA => _uniqueToA.AsReadOnly(); + + /// + /// List of files that are unique to B. + /// public IReadOnlyList UniqueToB => _uniqueToB.AsReadOnly(); + + /// + /// List of files that are different between A and B. + /// public IReadOnlyList DifferentFiles => _differentFiles.AsReadOnly(); public void AddUniqueToA(IEnumerable files) => _uniqueToA.AddRange(files); diff --git a/src/c#/GeneralUpdate.Common/File/GeneralFileManager.cs b/src/c#/GeneralUpdate.Common/File/GeneralFileManager.cs index cf41e9cd..e57f140d 100644 --- a/src/c#/GeneralUpdate.Common/File/GeneralFileManager.cs +++ b/src/c#/GeneralUpdate.Common/File/GeneralFileManager.cs @@ -63,6 +63,11 @@ public static void RemoveBlackFile(string fileName) _blackFiles.Remove(fileName); } + /// + /// Compare two directories. + /// + /// + /// public void CompareDirectories(string dirA, string dirB) { ComparisonResult = new ComparisonResult(); @@ -100,7 +105,7 @@ public static void CreateJson(string targetPath, T obj) File.WriteAllText(targetPath, jsonString); } - public static T GetJson(string path) + public static T? GetJson(string path) { if (File.Exists(path)) { @@ -115,13 +120,13 @@ public static T GetJson(string path) /// /// /// - public static string Serialize(object obj) + public static string Serialize(object? obj) { if (obj == null) return string.Empty; var json = JsonConvert.SerializeObject(obj); var bytes = Encoding.Default.GetBytes(json); - var base64str = Convert.ToBase64String(bytes); - return base64str; + var base64Str = Convert.ToBase64String(bytes); + return base64Str; } /// @@ -130,7 +135,7 @@ public static string Serialize(object obj) /// /// /// - public static T Deserialize(string str) + public static T? Deserialize(string str) { var obj = default(T); if (string.IsNullOrEmpty(str)) return obj; @@ -142,7 +147,7 @@ public static T Deserialize(string str) public static string GetTempDirectory(string name) { - var path = $"generalupdate_{DateTime.Now.ToString("yyyy-MM-dd")}_{name}"; + var path = $"generalupdate_{DateTime.Now:yyyy-MM-dd}_{name}"; var tempDir = Path.Combine(Path.GetTempPath(), path); if (!Directory.Exists(tempDir)) { diff --git a/src/c#/GeneralUpdate.Common/Internal/Bootstrap/AbstractBootstrap.cs b/src/c#/GeneralUpdate.Common/Internal/Bootstrap/AbstractBootstrap.cs index c388b248..f9a635f9 100644 --- a/src/c#/GeneralUpdate.Common/Internal/Bootstrap/AbstractBootstrap.cs +++ b/src/c#/GeneralUpdate.Common/Internal/Bootstrap/AbstractBootstrap.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Diagnostics.Contracts; +using System.Diagnostics; +using System.Threading.Tasks; using GeneralUpdate.Common.Internal.Strategy; namespace GeneralUpdate.Common.Internal.Bootstrap @@ -10,74 +10,31 @@ public abstract class AbstractBootstrap where TBootstrap : AbstractBootstrap where TStrategy : IStrategy { - #region Private Members - private readonly ConcurrentDictionary _options; - private volatile Func _strategyFactory; - private IStrategy _strategy; - - #endregion Private Members - - #region Constructors - - protected internal AbstractBootstrap() => this._options = new ConcurrentDictionary(); - - #endregion Constructors - #region Methods + protected internal AbstractBootstrap() => _options = new ConcurrentDictionary(); /// /// Launch udpate. /// /// - public virtual TBootstrap LaunchAsync() - { - return (TBootstrap)this; - } - - #region Strategy - - protected IStrategy InitStrategy() - { - return _strategy; - } - - protected string GetPlatform() => _strategy.GetPlatform(); - - protected IStrategy ExecuteStrategy() - { - if (_strategy != null) _strategy.Execute(); - return _strategy; - } - - public virtual TBootstrap Validate() - { - if (this._strategyFactory == null) throw new InvalidOperationException("Strategy or strategy factory not set."); - return (TBootstrap)this; - } - - public virtual TBootstrap Strategy() where T : TStrategy, new() => this.StrategyFactory(() => new T()); + protected abstract TBootstrap Launch(); + + /// + /// Launch async udpate. + /// + /// + protected abstract Task LaunchAsync(); - public TBootstrap StrategyFactory(Func strategyFactory) - { - this._strategyFactory = strategyFactory; - return (TBootstrap)this; - } + protected abstract IStrategy InitStrategy(); - #endregion Strategy + protected abstract IStrategy ExecuteStrategy(); - #region Config option. + protected virtual TBootstrap Strategy() where T : TStrategy, new() => this.StrategyFactory(() => new T()); - /// - /// Files in the blacklist will skip the update. - /// - /// blacklist file name - /// - public virtual TBootstrap SetBlacklist(List files = null, List fileFormats = null) - { - return (TBootstrap)this; - } + protected abstract TBootstrap StrategyFactory(Func strategyFactory); + /// /// Setting update configuration. /// @@ -87,7 +44,7 @@ public virtual TBootstrap SetBlacklist(List files = null, List f /// public virtual TBootstrap Option(UpdateOption option, T value) { - Contract.Requires(option != null); + Debug.Assert(option != null); if (value == null) { this._options.TryRemove(option, out _); @@ -99,24 +56,13 @@ public virtual TBootstrap Option(UpdateOption option, T value) return (TBootstrap)this; } - public virtual T GetOption(UpdateOption option) + public virtual T? GetOption(UpdateOption option) { - try - { - if (_options == null || _options.Count == 0) return default(T); - var val = _options[option]; - if (val != null) return (T)val.GetValue(); - return default(T); - } - catch - { - return default(T); - } + Debug.Assert(option != null); + if (_options.Count == 0) return default(T); + var val = _options[option]; + if (val != null) return (T)val.GetValue(); + return default(T); } - - #endregion Config option. - - - #endregion Methods } } \ No newline at end of file diff --git a/src/c#/GeneralUpdate.Common/Internal/Bootstrap/UpdateOption.cs b/src/c#/GeneralUpdate.Common/Internal/Bootstrap/UpdateOption.cs index e0455d17..131b0b59 100644 --- a/src/c#/GeneralUpdate.Common/Internal/Bootstrap/UpdateOption.cs +++ b/src/c#/GeneralUpdate.Common/Internal/Bootstrap/UpdateOption.cs @@ -1,12 +1,38 @@ using System; using System.Collections.Generic; using System.Diagnostics.Contracts; +using System.Text; using System.Threading; namespace GeneralUpdate.Common.Internal.Bootstrap { public abstract class UpdateOption : AbstractConstant { + /// + /// Update the file format of the package. + /// + public static readonly UpdateOption Format = ValueOf("COMPRESSFORMAT"); + + /// + /// Compress encoding. + /// + public static readonly UpdateOption Encoding = ValueOf("COMPRESSENCODING"); + + /// + /// Main program name. + /// + public static readonly UpdateOption MainApp = ValueOf("MAINAPP"); + + /// + /// Timeout period (unit: second). If this parameter is not specified, the default timeout period is 30 seconds. + /// + public static readonly UpdateOption DownloadTimeOut = ValueOf("DOWNLOADTIMEOUT"); + + /// + /// Whether to enable the driver upgrade function. + /// + public static readonly UpdateOption Drive = ValueOf("DRIVE"); + private class UpdateOptionPool : ConstantPool { protected override IConstant NewConstant(int id, string name) => new UpdateOption(id, name); diff --git a/src/c#/GeneralUpdate.Common/Internal/Pipeline/IMiddleware.cs b/src/c#/GeneralUpdate.Common/Internal/Pipeline/IMiddleware.cs index 910fa130..4e26809e 100644 --- a/src/c#/GeneralUpdate.Common/Internal/Pipeline/IMiddleware.cs +++ b/src/c#/GeneralUpdate.Common/Internal/Pipeline/IMiddleware.cs @@ -7,6 +7,6 @@ namespace GeneralUpdate.Common.Internal.Pipeline /// public interface IMiddleware { - Task InvokeAsync(IContext context, IMiddleware middleware); + Task InvokeAsync(PipelineContext context, IMiddleware middleware); } } \ No newline at end of file diff --git a/src/c#/GeneralUpdate.Common/Internal/Pipeline/PipelineBuilder.cs b/src/c#/GeneralUpdate.Common/Internal/Pipeline/PipelineBuilder.cs index dac85eaf..fae0c90d 100644 --- a/src/c#/GeneralUpdate.Common/Internal/Pipeline/PipelineBuilder.cs +++ b/src/c#/GeneralUpdate.Common/Internal/Pipeline/PipelineBuilder.cs @@ -7,20 +7,22 @@ namespace GeneralUpdate.Common.Internal.Pipeline /// /// Pipeline builder. /// - public sealed class PipelineBuilder(IContext context = null) + public sealed class PipelineBuilder(PipelineContext context = null) { private ImmutableStack _middlewareStack = ImmutableStack.Empty; - public PipelineBuilder UseMiddleware(TMiddleware middleware) where TMiddleware : IMiddleware, new() + public PipelineBuilder UseMiddleware() where TMiddleware : IMiddleware, new() { + var middleware = new TMiddleware(); _middlewareStack = _middlewareStack.Push(middleware); return this; } - public PipelineBuilder UseMiddlewareIf(TMiddleware middleware, Func condition) + public PipelineBuilder UseMiddlewareIf(Func condition) where TMiddleware : IMiddleware, new() { if (!condition()) return this; + var middleware = new TMiddleware(); _middlewareStack = _middlewareStack.Push(middleware); return this; } diff --git a/src/c#/GeneralUpdate.Common/Internal/Pipeline/PipelineContext.cs b/src/c#/GeneralUpdate.Common/Internal/Pipeline/PipelineContext.cs new file mode 100644 index 00000000..8a85686f --- /dev/null +++ b/src/c#/GeneralUpdate.Common/Internal/Pipeline/PipelineContext.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Concurrent; + +namespace GeneralUpdate.Common.Internal.Pipeline; + +public class PipelineContext +{ + private ConcurrentDictionary _context = new(); + + public TValue? Get(string key) + { + if (_context.TryGetValue(key, out var value)) + { + return value is TValue typedValue ? typedValue : default; + } + return default; + } + + public void Add(string key, TValue? value) + { + if (string.IsNullOrWhiteSpace(key)) + { + throw new ArgumentException("Key cannot be null or whitespace.", nameof(key)); + } + + _context[key] = value; + } + + public bool Remove(string key) => _context.TryRemove(key, out _); + + public bool ContainsKey(string key) => _context.ContainsKey(key); +} \ No newline at end of file diff --git a/src/c#/GeneralUpdate.Common/Internal/Strategy/AbstractStrategy.cs b/src/c#/GeneralUpdate.Common/Internal/Strategy/AbstractStrategy.cs index 527325d6..344a7fde 100644 --- a/src/c#/GeneralUpdate.Common/Internal/Strategy/AbstractStrategy.cs +++ b/src/c#/GeneralUpdate.Common/Internal/Strategy/AbstractStrategy.cs @@ -9,8 +9,10 @@ public abstract class AbstractStrategy : IStrategy protected const string PATCHS = "patchs"; public virtual void Execute() => throw new NotImplementedException(); + + public virtual Task ExecuteAsync() => throw new NotImplementedException(); - public virtual bool StartApp(string appName, int appType) => throw new NotImplementedException(); + public virtual void StartApp(string appName, int appType) => throw new NotImplementedException(); public virtual string GetPlatform() => throw new NotImplementedException(); diff --git a/src/c#/GeneralUpdate.Common/Internal/Strategy/IStrategy.cs b/src/c#/GeneralUpdate.Common/Internal/Strategy/IStrategy.cs index 5295a586..9dbd5754 100644 --- a/src/c#/GeneralUpdate.Common/Internal/Strategy/IStrategy.cs +++ b/src/c#/GeneralUpdate.Common/Internal/Strategy/IStrategy.cs @@ -18,7 +18,7 @@ public interface IStrategy /// /// /// - bool StartApp(string appName, int appType); + void StartApp(string appName, int appType); /// /// Get the platform for the current strategy. @@ -34,7 +34,6 @@ public interface IStrategy /// /// Create a strategy. /// - /// Abstraction for updating package information. void Create(T parameter) where T : class; } } \ No newline at end of file diff --git a/src/c#/GeneralUpdate.Common/Shared/Object/Packet.cs b/src/c#/GeneralUpdate.Common/Shared/Object/Packet.cs index a2edd846..60937814 100644 --- a/src/c#/GeneralUpdate.Common/Shared/Object/Packet.cs +++ b/src/c#/GeneralUpdate.Common/Shared/Object/Packet.cs @@ -116,12 +116,7 @@ public Packet(string mainUpdateUrl, int appType, string updateUrl, string appNam /// Configuration parameters for upgrading the terminal program. /// public string ProcessBase64 { get; set; } - - /// - /// The platform to which the current strategy belongs. - /// - public string Platform { get; set; } - + /// /// Files in the blacklist will skip the update. /// @@ -137,9 +132,5 @@ public Packet(string mainUpdateUrl, int appType, string updateUrl, string appNam /// public bool DriveEnabled { get; set; } - /// - /// Whether open note function, if you want to start needs to be synchronized to deploy 'GeneralUpdate. SystemService' service. - /// - public bool WillMessageEnabled { get; set; } } } \ No newline at end of file From 2b5d8cd8fe7e6932f98a7dcb67cbbc84084433c7 Mon Sep 17 00:00:00 2001 From: justerzhu Date: Thu, 12 Sep 2024 23:59:02 +0800 Subject: [PATCH 3/3] =?UTF-8?q?remove:=20=E7=A7=BB=E9=99=A4=E5=86=97?= =?UTF-8?q?=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Shared/Object/Configinfo.cs | 2 +- .../Shared/Object/Entity.cs | 31 ------------------- .../Shared/Object/Packet.cs | 4 +-- .../Shared/Object/ParamsOSS.cs | 2 +- .../Shared/Object/ProcessInfo.cs | 2 +- .../Shared/Object/VersionInfo.cs | 3 +- 6 files changed, 5 insertions(+), 39 deletions(-) delete mode 100644 src/c#/GeneralUpdate.Common/Shared/Object/Entity.cs diff --git a/src/c#/GeneralUpdate.Common/Shared/Object/Configinfo.cs b/src/c#/GeneralUpdate.Common/Shared/Object/Configinfo.cs index 1b7f541d..116145e3 100644 --- a/src/c#/GeneralUpdate.Common/Shared/Object/Configinfo.cs +++ b/src/c#/GeneralUpdate.Common/Shared/Object/Configinfo.cs @@ -3,7 +3,7 @@ namespace GeneralUpdate.Common.Shared.Object { - public class Configinfo : Entity + public class Configinfo { public Configinfo() { } diff --git a/src/c#/GeneralUpdate.Common/Shared/Object/Entity.cs b/src/c#/GeneralUpdate.Common/Shared/Object/Entity.cs deleted file mode 100644 index c40237f6..00000000 --- a/src/c#/GeneralUpdate.Common/Shared/Object/Entity.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Text.RegularExpressions; - -namespace GeneralUpdate.Common.Shared.Object -{ - public class Entity - { - /// - /// 委派标识 - /// - protected string Identity { get; set; } - - public string ID - { - get { return this.Identity; } - protected set { this.Identity = value; } - } - - protected bool IsURL(string url) - { - string check = @"((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?"; - var regex = new Regex(check); - return regex.IsMatch(url); - } - - protected bool IsVersion(string version) - { - return Version.TryParse(version, out var ver); - } - } -} \ No newline at end of file diff --git a/src/c#/GeneralUpdate.Common/Shared/Object/Packet.cs b/src/c#/GeneralUpdate.Common/Shared/Object/Packet.cs index 60937814..5addbe86 100644 --- a/src/c#/GeneralUpdate.Common/Shared/Object/Packet.cs +++ b/src/c#/GeneralUpdate.Common/Shared/Object/Packet.cs @@ -4,16 +4,14 @@ namespace GeneralUpdate.Common.Shared.Object { - public class Packet : Entity + public class Packet { public Packet() { } public Packet(string mainUpdateUrl, int appType, string updateUrl, string appName, string mainAppName, string format, bool isUpdate, string updateLogUrl, Encoding encoding, int downloadTimeOut, string appSecretKey, string tempPath) { - if (!IsURL(mainUpdateUrl)) throw new Exception($"Illegal url {nameof(mainUpdateUrl)}"); MainUpdateUrl = mainUpdateUrl ?? throw new ArgumentNullException(nameof(MainUpdateUrl)); - if (!IsURL(updateUrl)) throw new Exception($"Illegal url {nameof(UpdateUrl)}"); UpdateUrl = updateUrl ?? throw new ArgumentNullException(nameof(updateUrl)); UpdateLogUrl = updateLogUrl ?? throw new ArgumentNullException(nameof(updateLogUrl)); AppType = appType; diff --git a/src/c#/GeneralUpdate.Common/Shared/Object/ParamsOSS.cs b/src/c#/GeneralUpdate.Common/Shared/Object/ParamsOSS.cs index 3f861905..e8675c17 100644 --- a/src/c#/GeneralUpdate.Common/Shared/Object/ParamsOSS.cs +++ b/src/c#/GeneralUpdate.Common/Shared/Object/ParamsOSS.cs @@ -2,7 +2,7 @@ namespace GeneralUpdate.Common.Shared.Object { - public class ParamsOSS : Entity + public class ParamsOSS { public string Url { get; set; } diff --git a/src/c#/GeneralUpdate.Common/Shared/Object/ProcessInfo.cs b/src/c#/GeneralUpdate.Common/Shared/Object/ProcessInfo.cs index 00062bdd..8e20661a 100644 --- a/src/c#/GeneralUpdate.Common/Shared/Object/ProcessInfo.cs +++ b/src/c#/GeneralUpdate.Common/Shared/Object/ProcessInfo.cs @@ -5,7 +5,7 @@ namespace GeneralUpdate.Common.Shared.Object { - public class ProcessInfo : Entity + public class ProcessInfo { public ProcessInfo() { } diff --git a/src/c#/GeneralUpdate.Common/Shared/Object/VersionInfo.cs b/src/c#/GeneralUpdate.Common/Shared/Object/VersionInfo.cs index e118cbbf..ebe6bb5d 100644 --- a/src/c#/GeneralUpdate.Common/Shared/Object/VersionInfo.cs +++ b/src/c#/GeneralUpdate.Common/Shared/Object/VersionInfo.cs @@ -2,7 +2,7 @@ namespace GeneralUpdate.Common.Shared.Object { - public class VersionInfo : Entity + public class VersionInfo { public VersionInfo() { } @@ -14,7 +14,6 @@ public VersionInfo(long pubTime, string name, string hash, string version, strin Hash = hash ?? throw new ArgumentNullException(nameof(hash)); Version = version ?? throw new ArgumentNullException(nameof(version)); Url = url ?? throw new ArgumentNullException(nameof(Url)); - if (!IsURL(Url)) throw new Exception($"Illegal url {nameof(Url)}"); } ///