From 589246aaef847847b65d00e87fb5826603724e81 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Sun, 5 Dec 2021 21:19:28 +0300 Subject: Move responseOrder field to AddIn class --- Source/Assistant/SkuAssist.cs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index e8ce789..a0195ba 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -10,15 +10,6 @@ using System.Threading.Tasks; namespace Rehau.Sku.Assist { - public enum ResponseOrder - { - NoSettings, - Relevance, - Name, - Price, - Series - } - public enum ProductField { Name, @@ -30,7 +21,7 @@ namespace Rehau.Sku.Assist { public static async Task GetProduct(string request) { - Uri uri = request.ConvertToUri(ResponseOrder.NoSettings); + Uri uri = request.ConvertToUri(); Task contentTask = Task.Run(() => HttpClientUtil.GetContentByUriAsync(uri)); Task documentTask = await contentTask.ContinueWith(content => HttpClientUtil.ContentToDocAsync(content)); -- cgit v1.2.3 From 8bc62a6f024ae2c7d346fe3570c9c0241a773ec5 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Sun, 5 Dec 2021 21:25:30 +0300 Subject: Refactoring --- Source/Assistant/SkuAssist.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index a0195ba..bd757b0 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -29,12 +29,13 @@ namespace Rehau.Sku.Assist return GetProduct(documentTask.Result); } - public static IProduct GetProduct(IDocument d) + public static IProduct GetProduct(IDocument document) { - string script = d.Scripts - .Where(s => s.InnerHtml.Contains("dataLayer")) - .First() - .InnerHtml; + string script = document + .Scripts + .Where(s => s.InnerHtml.Contains("dataLayer")) + .First() + .InnerHtml; string json = script .Substring(script.IndexOf("push(") + 5) -- cgit v1.2.3 From 0288ae0a185095d182dfc18af6709bac7159f5e0 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 6 Dec 2021 19:50:00 +0300 Subject: Add IsRehauSku() method --- Source/Assistant/SkuAssist.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index bd757b0..bfe7b90 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -48,7 +48,7 @@ namespace Rehau.Sku.Assist IProduct product = storeResponse .Ecommerce .Impressions - .Where(p => Regex.IsMatch(p.Id, @"\d{11}", RegexOptions.None)) + .Where(p => p.Id.IsRehauSku()) .FirstOrDefault(); return product; @@ -94,5 +94,12 @@ namespace Rehau.Sku.Assist return ExcelError.ExcelErrorValue; } } + + public static bool IsRehauSku(this string line) + { + return Regex.IsMatch(line, @"\d{11}") && + line[0].Equals('1') && + line[7].Equals('1'); + } } } \ No newline at end of file -- cgit v1.2.3 From 4743aa706e8342cdb3202c59e82bddef277cabfa Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 6 Dec 2021 19:52:34 +0300 Subject: Refactoring --- Source/Assistant/SkuAssist.cs | 3 --- 1 file changed, 3 deletions(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index bfe7b90..a524daa 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -28,7 +28,6 @@ namespace Rehau.Sku.Assist return GetProduct(documentTask.Result); } - public static IProduct GetProduct(IDocument document) { string script = document @@ -53,7 +52,6 @@ namespace Rehau.Sku.Assist return product; } - public static object GetProduct(string request, ProductField field) { IProduct product; @@ -94,7 +92,6 @@ namespace Rehau.Sku.Assist return ExcelError.ExcelErrorValue; } } - public static bool IsRehauSku(this string line) { return Regex.IsMatch(line, @"\d{11}") && -- cgit v1.2.3 From adf66ad2a2c358ec8d3edfc92f96ba0376888e74 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Tue, 7 Dec 2021 08:48:35 +0300 Subject: Add try...catch to GetProduct --- Source/Assistant/SkuAssist.cs | 44 ++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index a524daa..6d72a72 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Runtime.Caching; using System.Text.RegularExpressions; using System.Threading.Tasks; +using System.Windows.Forms; namespace Rehau.Sku.Assist { @@ -30,27 +31,36 @@ namespace Rehau.Sku.Assist } public static IProduct GetProduct(IDocument document) { - string script = document - .Scripts - .Where(s => s.InnerHtml.Contains("dataLayer")) - .First() - .InnerHtml; + try + { + string script = document + .Scripts + .Where(s => s.InnerHtml.Contains("dataLayer")) + .FirstOrDefault() + .InnerHtml; - string json = script - .Substring(script.IndexOf("push(") + 5) - .TrimEnd(new[] { ')', ';', '\n', ' ' }); + string json = script + .Substring(script.IndexOf("push(") + 5) + .TrimEnd(new[] { ')', ';', '\n', ' ' }); - if (!json.Contains("impressions")) - return null; + if (!json.Contains("impressions")) + return null; - StoreResponce storeResponse = JsonConvert.DeserializeObject(json); - IProduct product = storeResponse - .Ecommerce - .Impressions - .Where(p => p.Id.IsRehauSku()) - .FirstOrDefault(); + StoreResponce storeResponse = JsonConvert.DeserializeObject(json); + IProduct product = storeResponse + .Ecommerce + .Impressions + .Where(p => p.Id.IsRehauSku()) + .FirstOrDefault(); + + return product; + } - return product; + catch (NullReferenceException e) + { + MessageBox.Show(e.Message, "Ошибка получения данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return null; + } } public static object GetProduct(string request, ProductField field) { -- cgit v1.2.3 From 74877f874e401d29f0576c5027abba83587103f3 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Wed, 8 Dec 2021 13:58:37 +0300 Subject: Rename to RehauSku --- Source/Assistant/SkuAssist.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index 6d72a72..775a33c 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -9,7 +9,7 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; -namespace Rehau.Sku.Assist +namespace RehauSku.Assist { public enum ProductField { -- cgit v1.2.3 From dc1fc8b221e9324fe0f82c4ea4a32d87d282bd25 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Wed, 8 Dec 2021 14:45:14 +0300 Subject: refactoring namespaces --- Source/Assistant/SkuAssist.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index 775a33c..eddb0cd 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -9,7 +9,7 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; -namespace RehauSku.Assist +namespace RehauSku.Assistant { public enum ProductField { -- cgit v1.2.3 From 93835233f3ddc335d93b3092d5ae2fcca87ff2c2 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Wed, 8 Dec 2021 17:20:28 +0300 Subject: Edit IsRehauSku regex expression --- Source/Assistant/SkuAssist.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index eddb0cd..9beb0ce 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -104,9 +104,7 @@ namespace RehauSku.Assistant } public static bool IsRehauSku(this string line) { - return Regex.IsMatch(line, @"\d{11}") && - line[0].Equals('1') && - line[7].Equals('1'); + return Regex.IsMatch(line, @"[1]\d{6}[1]\d{3}"); } } } \ No newline at end of file -- cgit v1.2.3 From bc3421e67f7fd64ff0a7a0c078bbba6fbf971905 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Wed, 8 Dec 2021 17:22:46 +0300 Subject: Edit IsRehauSku regex expression --- Source/Assistant/SkuAssist.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index 9beb0ce..28d1503 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -104,7 +104,7 @@ namespace RehauSku.Assistant } public static bool IsRehauSku(this string line) { - return Regex.IsMatch(line, @"[1]\d{6}[1]\d{3}"); + return Regex.IsMatch(line, @"^[1]\d{6}[1]\d{3}$"); } } } \ No newline at end of file -- cgit v1.2.3 From e175a634cefc6e8c0ecd49514a89b1d4f30ce33b Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 13 Dec 2021 20:39:41 +0300 Subject: Refactoring. ExcelDNA.IntelliSense library add. Add description to Excel functions. --- Source/Assistant/SkuAssist.cs | 98 +++---------------------------------------- 1 file changed, 5 insertions(+), 93 deletions(-) (limited to 'Source/Assistant/SkuAssist.cs') diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index 28d1503..6c68288 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -1,13 +1,4 @@ -using AngleSharp.Dom; -using ExcelDna.Integration; -using Newtonsoft.Json; -using System; -using System.Globalization; -using System.Linq; -using System.Runtime.Caching; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using System.Windows.Forms; +using System.Threading.Tasks; namespace RehauSku.Assistant { @@ -20,91 +11,12 @@ namespace RehauSku.Assistant static class SkuAssist { - public static async Task GetProduct(string request) + public static async Task GetProductAsync(string request) { - Uri uri = request.ConvertToUri(); + var content = await HttpClientUtil.GetContentByRequest(request); + var document = await ParseUtil.ContentToDocAsync(content); - Task contentTask = Task.Run(() => HttpClientUtil.GetContentByUriAsync(uri)); - Task documentTask = await contentTask.ContinueWith(content => HttpClientUtil.ContentToDocAsync(content)); - - return GetProduct(documentTask.Result); - } - public static IProduct GetProduct(IDocument document) - { - try - { - string script = document - .Scripts - .Where(s => s.InnerHtml.Contains("dataLayer")) - .FirstOrDefault() - .InnerHtml; - - string json = script - .Substring(script.IndexOf("push(") + 5) - .TrimEnd(new[] { ')', ';', '\n', ' ' }); - - if (!json.Contains("impressions")) - return null; - - StoreResponce storeResponse = JsonConvert.DeserializeObject(json); - IProduct product = storeResponse - .Ecommerce - .Impressions - .Where(p => p.Id.IsRehauSku()) - .FirstOrDefault(); - - return product; - } - - catch (NullReferenceException e) - { - MessageBox.Show(e.Message, "Ошибка получения данных", MessageBoxButtons.OK, MessageBoxIcon.Error); - return null; - } - } - public static object GetProduct(string request, ProductField field) - { - IProduct product; - - if (MemoryCache.Default.Contains(request)) - { - product = MemoryCache.Default[request] as IProduct; - } - - else - { - object result = ExcelAsyncUtil.Run("RauName", new[] { request }, - delegate - { - Task p = Task.Run(() => GetProduct(request)); - return p.Result; - }); - - if (result == null) - return "Не найдено :("; - - if (result.Equals(ExcelError.ExcelErrorNA)) - return "Загрузка..."; - - product = result as IProduct; - MemoryCache.Default.Add(request, product, DateTime.Now.AddMinutes(10)); - } - - switch (field) - { - case ProductField.Name: - return product.Name; - case ProductField.Id: - return product.Id; - case ProductField.Price: - return double.Parse((string)product.Price, CultureInfo.InvariantCulture); - default: - return ExcelError.ExcelErrorValue; - } - } - public static bool IsRehauSku(this string line) - { - return Regex.IsMatch(line, @"^[1]\d{6}[1]\d{3}$"); + return ParseUtil.GetProduct(document); } } } \ No newline at end of file -- cgit v1.2.3