From 6acef73943521ba82dfe6d60bd20383a00b33744 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Thu, 21 Jul 2022 12:04:30 +0200 Subject: [PATCH 1/7] api adjustments --- MareSynchronosAPI/API.cs | 2 +- MareSynchronosAPI/CharacterCacheDto.cs | 1 + MareSynchronosAPI/ObjectKind.cs | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 MareSynchronosAPI/ObjectKind.cs diff --git a/MareSynchronosAPI/API.cs b/MareSynchronosAPI/API.cs index e10aa58..2022a18 100644 --- a/MareSynchronosAPI/API.cs +++ b/MareSynchronosAPI/API.cs @@ -8,7 +8,7 @@ namespace MareSynchronos.API { public class Api { - public const int Version = 5; + public const int Version = 6; public const string Path = "/mare"; public const string SendFileAbortUpload = "AbortUpload"; diff --git a/MareSynchronosAPI/CharacterCacheDto.cs b/MareSynchronosAPI/CharacterCacheDto.cs index ce13618..a87d14f 100644 --- a/MareSynchronosAPI/CharacterCacheDto.cs +++ b/MareSynchronosAPI/CharacterCacheDto.cs @@ -4,6 +4,7 @@ namespace MareSynchronos.API { public record CharacterCacheDto { + public ObjectKind ObjectKind { get; set; } public List FileReplacements { get; set; } = new(); public string GlamourerData { get; set; } public string ManipulationData { get; set; } diff --git a/MareSynchronosAPI/ObjectKind.cs b/MareSynchronosAPI/ObjectKind.cs new file mode 100644 index 0000000..34331df --- /dev/null +++ b/MareSynchronosAPI/ObjectKind.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MareSynchronos.API +{ + public enum ObjectKind + { + Player = 0, + Minion = 1, + Companion = 2, + Pet = 3 + } +} From ffc0a48fdadd71d33b015e4e46ef15303f1d2f60 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Thu, 21 Jul 2022 23:59:08 +0200 Subject: [PATCH 2/7] add mount to objectkind --- MareSynchronosAPI/ObjectKind.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MareSynchronosAPI/ObjectKind.cs b/MareSynchronosAPI/ObjectKind.cs index 34331df..5bd4a33 100644 --- a/MareSynchronosAPI/ObjectKind.cs +++ b/MareSynchronosAPI/ObjectKind.cs @@ -11,6 +11,7 @@ namespace MareSynchronos.API Player = 0, Minion = 1, Companion = 2, - Pet = 3 + Pet = 3, + Mount = 4 } } From 96d17b006e58614228f00a361b60f569b6e99445 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Sun, 24 Jul 2022 00:41:44 +0200 Subject: [PATCH 3/7] adjust character cache dto --- MareSynchronosAPI/CharacterCacheDto.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/MareSynchronosAPI/CharacterCacheDto.cs b/MareSynchronosAPI/CharacterCacheDto.cs index a87d14f..6552740 100644 --- a/MareSynchronosAPI/CharacterCacheDto.cs +++ b/MareSynchronosAPI/CharacterCacheDto.cs @@ -4,9 +4,8 @@ namespace MareSynchronos.API { public record CharacterCacheDto { - public ObjectKind ObjectKind { get; set; } - public List FileReplacements { get; set; } = new(); - public string GlamourerData { get; set; } + public Dictionary FileReplacements { get; set; } = new(); + public Dictionary GlamourerData { get; set; } public string ManipulationData { get; set; } public string Hash { get; set; } } From fc5fbddf3b0e1b20bfabc34faf4b1b47bf43c898 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Sun, 24 Jul 2022 00:46:14 +0200 Subject: [PATCH 4/7] adjust api again --- MareSynchronosAPI/CharacterCacheDto.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MareSynchronosAPI/CharacterCacheDto.cs b/MareSynchronosAPI/CharacterCacheDto.cs index 6552740..94e4555 100644 --- a/MareSynchronosAPI/CharacterCacheDto.cs +++ b/MareSynchronosAPI/CharacterCacheDto.cs @@ -4,7 +4,7 @@ namespace MareSynchronos.API { public record CharacterCacheDto { - public Dictionary FileReplacements { get; set; } = new(); + public Dictionary> FileReplacements { get; set; } = new(); public Dictionary GlamourerData { get; set; } public string ManipulationData { get; set; } public string Hash { get; set; } From e67c399f4e54ea766c860b4ec0c53b5033af616d Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Sun, 24 Jul 2022 03:25:38 +0200 Subject: [PATCH 5/7] add init for cache dto --- MareSynchronosAPI/CharacterCacheDto.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MareSynchronosAPI/CharacterCacheDto.cs b/MareSynchronosAPI/CharacterCacheDto.cs index 94e4555..30905f3 100644 --- a/MareSynchronosAPI/CharacterCacheDto.cs +++ b/MareSynchronosAPI/CharacterCacheDto.cs @@ -5,8 +5,8 @@ namespace MareSynchronos.API public record CharacterCacheDto { public Dictionary> FileReplacements { get; set; } = new(); - public Dictionary GlamourerData { get; set; } - public string ManipulationData { get; set; } - public string Hash { get; set; } + public Dictionary GlamourerData { get; set; } = new(); + public string ManipulationData { get; set; } = string.Empty; + public string Hash { get; set; } = string.Empty; } } From 91143894e5314670595c9fe3f364c27280fa2391 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Sun, 24 Jul 2022 12:22:29 +0200 Subject: [PATCH 6/7] add gethashcode to filereplacementdto --- MareSynchronosAPI/FileReplacementDto.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/MareSynchronosAPI/FileReplacementDto.cs b/MareSynchronosAPI/FileReplacementDto.cs index 57aa2cb..9156856 100644 --- a/MareSynchronosAPI/FileReplacementDto.cs +++ b/MareSynchronosAPI/FileReplacementDto.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; namespace MareSynchronos.API { @@ -6,5 +7,21 @@ namespace MareSynchronos.API { public string[] GamePaths { get; set; } = Array.Empty(); public string Hash { get; set; } + + public override int GetHashCode() + { + return HashCode.Combine(GetOrderIndependentHashCode(GamePaths), Hash); + } + + public static int GetOrderIndependentHashCode(IEnumerable source) + { + int hash = 0; + foreach (T element in source) + { + hash = unchecked(hash + + EqualityComparer.Default.GetHashCode(element)); + } + return hash; + } } } \ No newline at end of file From f361992097f0fdc8f58a821baeb6623b77cb1ec7 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Sun, 24 Jul 2022 14:31:22 +0200 Subject: [PATCH 7/7] adjust DTOs --- MareSynchronosAPI/CharacterCacheDto.cs | 44 +++++++++++++++++++++++-- MareSynchronosAPI/FileReplacementDto.cs | 14 +++++++- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/MareSynchronosAPI/CharacterCacheDto.cs b/MareSynchronosAPI/CharacterCacheDto.cs index 30905f3..61c6618 100644 --- a/MareSynchronosAPI/CharacterCacheDto.cs +++ b/MareSynchronosAPI/CharacterCacheDto.cs @@ -1,12 +1,50 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; namespace MareSynchronos.API { - public record CharacterCacheDto + public class CharacterCacheDto { public Dictionary> FileReplacements { get; set; } = new(); public Dictionary GlamourerData { get; set; } = new(); public string ManipulationData { get; set; } = string.Empty; - public string Hash { get; set; } = string.Empty; + public override string ToString() + { + return GetHashCode() + Environment.NewLine + "Manip:" + ManipulationData + Environment.NewLine + + string.Join(Environment.NewLine, GlamourerData.Select(g => g.Key + ":" + g.Value)) + Environment.NewLine + + string.Join(Environment.NewLine, FileReplacements.Select(g => g.Key + Environment.NewLine + string.Join(Environment.NewLine, g.Value))); + } + + public static int GetOrderIndependentHashCode(IEnumerable source) + { + int hash = 0; + foreach (T element in source) + { + hash = unchecked(hash + + EqualityComparer.Default.GetHashCode(element)); + } + return hash; + } + + public override int GetHashCode() + { + int fileReplacementsHash = 0; + foreach (var item in FileReplacements) + { + foreach (var values in item.Value) + { + fileReplacementsHash = unchecked(fileReplacementsHash + values.GetHashCode()); + } + } + + int glamourerHash = 0; + foreach (var item in GlamourerData) + { + glamourerHash = unchecked(glamourerHash + item.Value.GetHashCode()); + } + + return HashCode.Combine(fileReplacementsHash, glamourerHash, ManipulationData); + } } } diff --git a/MareSynchronosAPI/FileReplacementDto.cs b/MareSynchronosAPI/FileReplacementDto.cs index 9156856..c6ae7bc 100644 --- a/MareSynchronosAPI/FileReplacementDto.cs +++ b/MareSynchronosAPI/FileReplacementDto.cs @@ -1,13 +1,20 @@ using System; using System.Collections.Generic; +using System.Linq; namespace MareSynchronos.API { - public record FileReplacementDto + public class FileReplacementDto { public string[] GamePaths { get; set; } = Array.Empty(); public string Hash { get; set; } + public override bool Equals(object? otherObj) + { + if (otherObj == null || otherObj is not FileReplacementDto other) return false; + return Hash == other.Hash && Enumerable.SequenceEqual(GamePaths, other.GamePaths); + } + public override int GetHashCode() { return HashCode.Combine(GetOrderIndependentHashCode(GamePaths), Hash); @@ -23,5 +30,10 @@ namespace MareSynchronos.API } return hash; } + + public override string ToString() + { + return Hash + ":" + string.Join(",", GamePaths); + } } } \ No newline at end of file