From 2290f1b3403640025cbf2522f83f53b5913470c9 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Thu, 11 Nov 2021 21:13:21 +0300 Subject: =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B0=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D1=83=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Functions.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'Functions.cs') diff --git a/Functions.cs b/Functions.cs index 999a942..576e03c 100644 --- a/Functions.cs +++ b/Functions.cs @@ -5,10 +5,15 @@ namespace Rehau.Sku.Assist public class Functions : IExcelAddIn { [ExcelFunction(description: "Получение наименования и артикула позиции")] - public static string RAUNAME(string request) + public static object RAUNAME(string request) { SkuAssist.EnsureHttpInitialized(); - return SkuAssist.GetSku(request); + + return ExcelTaskUtil.Run("RAUNAME ASYNC", request, async token => + { + var document = await SkuAssist.GetDocumentAsync(request); + return SkuAssist.GetResultFromDocument(document); + }); } public void AutoClose() -- cgit v1.2.3 From f5234e956c79d3019e975a4d3550574c92f769e7 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Sun, 14 Nov 2021 12:27:49 +0300 Subject: Edit ASync method. Delete unnecessary classes --- Functions.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'Functions.cs') diff --git a/Functions.cs b/Functions.cs index 576e03c..aefdd87 100644 --- a/Functions.cs +++ b/Functions.cs @@ -1,25 +1,23 @@ using ExcelDna.Integration; +using System.Net.Http; namespace Rehau.Sku.Assist { public class Functions : IExcelAddIn { - [ExcelFunction(description: "Получение наименования и артикула позиции")] + static readonly HttpClient httpClient = new HttpClient(); + public static object RAUNAME(string request) { - SkuAssist.EnsureHttpInitialized(); - - return ExcelTaskUtil.Run("RAUNAME ASYNC", request, async token => + return ExcelAsyncUtil.Run("RAUNAME", request, delegate { - var document = await SkuAssist.GetDocumentAsync(request); + var document = SkuAssist.GetDocumentAsync(request, httpClient).Result; return SkuAssist.GetResultFromDocument(document); }); } public void AutoClose() { - ExcelIntegration.RegisterUnhandledExceptionHandler( - delegate (object ex) { return string.Format("!!!ERROR: {0}", ex.ToString()); }); } public void AutoOpen() -- cgit v1.2.3 From 0fe8e038af7f33eae824bba263e7c54dea829679 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 29 Nov 2021 11:26:25 +0300 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=BA=D1=8D=D1=88=D0=B8=D0=BD=D0=B3=20=D1=80=D0=B5=D0=B7=D1=83?= =?UTF-8?q?=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=BE=D0=B2=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D0=B0,=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D1=84=D0=B5=D0=B9=D1=81=20IProduct?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Functions.cs | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) (limited to 'Functions.cs') diff --git a/Functions.cs b/Functions.cs index aefdd87..9d3eb28 100644 --- a/Functions.cs +++ b/Functions.cs @@ -1,27 +1,53 @@ using ExcelDna.Integration; +using System.Runtime.Caching; using System.Net.Http; namespace Rehau.Sku.Assist { public class Functions : IExcelAddIn { - static readonly HttpClient httpClient = new HttpClient(); + private static HttpClient _httpClient; + private static ObjectCache _resultCache = MemoryCache.Default; - public static object RAUNAME(string request) + public void AutoClose() { - return ExcelAsyncUtil.Run("RAUNAME", request, delegate - { - var document = SkuAssist.GetDocumentAsync(request, httpClient).Result; - return SkuAssist.GetResultFromDocument(document); - }); } - - public void AutoClose() + public void AutoOpen() { + _httpClient = new HttpClient(); } - public void AutoOpen() + [ExcelFunction] + public static object RAUNAME(string request) { + string cachedResult = _resultCache[request] as string; + + if (cachedResult != null) + { + return cachedResult; + } + + else + { + object result = ExcelAsyncUtil.Run("RAUNAME", null, + delegate + { + var document = SkuAssist.GetDocumentAsync(request, _httpClient).Result; + var product = SkuAssist.GetProductFromDocument(document); + return product.ToString(); + }); + + if (result.Equals(ExcelError.ExcelErrorNA)) + { + return "Загрузка..."; + } + + else + { + _resultCache.Add(request, result, System.DateTime.Now.AddMinutes(20)); + return result.ToString(); + } + } } } } \ No newline at end of file -- cgit v1.2.3 From 3eb118d6db672eb8e27f2b2478b0688141782654 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 29 Nov 2021 15:50:24 +0300 Subject: Async/await ready solution init commit --- Functions.cs | 49 +++++++------------------------------------------ 1 file changed, 7 insertions(+), 42 deletions(-) (limited to 'Functions.cs') diff --git a/Functions.cs b/Functions.cs index 9d3eb28..ab6cedf 100644 --- a/Functions.cs +++ b/Functions.cs @@ -1,53 +1,18 @@ -using ExcelDna.Integration; -using System.Runtime.Caching; +using System; +using ExcelDna.Integration; using System.Net.Http; +using System.Threading.Tasks; namespace Rehau.Sku.Assist { - public class Functions : IExcelAddIn + public class Functions { - private static HttpClient _httpClient; - private static ObjectCache _resultCache = MemoryCache.Default; - - public void AutoClose() - { - } - public void AutoOpen() - { - _httpClient = new HttpClient(); - } + private static HttpClient httpClient = new HttpClient(); [ExcelFunction] - public static object RAUNAME(string request) + public static async Task RAUNAME(string request) { - string cachedResult = _resultCache[request] as string; - - if (cachedResult != null) - { - return cachedResult; - } - - else - { - object result = ExcelAsyncUtil.Run("RAUNAME", null, - delegate - { - var document = SkuAssist.GetDocumentAsync(request, _httpClient).Result; - var product = SkuAssist.GetProductFromDocument(document); - return product.ToString(); - }); - - if (result.Equals(ExcelError.ExcelErrorNA)) - { - return "Загрузка..."; - } - - else - { - _resultCache.Add(request, result, System.DateTime.Now.AddMinutes(20)); - return result.ToString(); - } - } + throw new NotImplementedException(); } } } \ No newline at end of file -- cgit v1.2.3 From e9ec1df01b752b423b66cb30dc2025a396f769f5 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 29 Nov 2021 16:36:04 +0300 Subject: Task chaining --- Functions.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'Functions.cs') diff --git a/Functions.cs b/Functions.cs index ab6cedf..9112822 100644 --- a/Functions.cs +++ b/Functions.cs @@ -1,4 +1,4 @@ -using System; +using AngleSharp.Dom; using ExcelDna.Integration; using System.Net.Http; using System.Threading.Tasks; @@ -12,7 +12,10 @@ namespace Rehau.Sku.Assist [ExcelFunction] public static async Task RAUNAME(string request) { - throw new NotImplementedException(); + Task contentTask = Task.Run(() => SkuAssist.GetContent(request, httpClient)); + Task documentTask = await contentTask.ContinueWith(content => SkuAssist.GetDocument(content)); + IProduct product = await documentTask.ContinueWith(doc => SkuAssist.GetProductFromDocument(doc.Result)); + return product.ToString(); } } } \ No newline at end of file -- cgit v1.2.3 From d176a023f06d70cb577e64d1a917e77d677d2a2b Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 29 Nov 2021 17:10:43 +0300 Subject: Add clean request private method --- Functions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Functions.cs') diff --git a/Functions.cs b/Functions.cs index 9112822..6792195 100644 --- a/Functions.cs +++ b/Functions.cs @@ -15,7 +15,7 @@ namespace Rehau.Sku.Assist Task contentTask = Task.Run(() => SkuAssist.GetContent(request, httpClient)); Task documentTask = await contentTask.ContinueWith(content => SkuAssist.GetDocument(content)); IProduct product = await documentTask.ContinueWith(doc => SkuAssist.GetProductFromDocument(doc.Result)); - return product.ToString(); + return product == null ? ExcelError.ExcelErrorNull.ToString() : product.ToString(); } } } \ No newline at end of file -- cgit v1.2.3 From 2afcbbf08c21aa7368361269f24240147aa79a00 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 29 Nov 2021 17:12:56 +0300 Subject: =?UTF-8?q?=D0=9E=D1=80=D0=B3=D0=B0=D0=BD=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D0=B9=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Functions.cs | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 Functions.cs (limited to 'Functions.cs') diff --git a/Functions.cs b/Functions.cs deleted file mode 100644 index 6792195..0000000 --- a/Functions.cs +++ /dev/null @@ -1,21 +0,0 @@ -using AngleSharp.Dom; -using ExcelDna.Integration; -using System.Net.Http; -using System.Threading.Tasks; - -namespace Rehau.Sku.Assist -{ - public class Functions - { - private static HttpClient httpClient = new HttpClient(); - - [ExcelFunction] - public static async Task RAUNAME(string request) - { - Task contentTask = Task.Run(() => SkuAssist.GetContent(request, httpClient)); - Task documentTask = await contentTask.ContinueWith(content => SkuAssist.GetDocument(content)); - IProduct product = await documentTask.ContinueWith(doc => SkuAssist.GetProductFromDocument(doc.Result)); - return product == null ? ExcelError.ExcelErrorNull.ToString() : product.ToString(); - } - } -} \ No newline at end of file -- cgit v1.2.3