diff options
author | Sergey Chebotar <s.chebotar@gmail.com> | 2021-12-03 12:57:22 +0300 |
---|---|---|
committer | Sergey Chebotar <s.chebotar@gmail.com> | 2021-12-03 12:57:22 +0300 |
commit | b5c71350700a486b8a8d1fa0fe7db32220963eba (patch) | |
tree | d49cfb62454f68333d2c19f5645e13d81cc108c1 /Source/ExcelDNA | |
parent | 3ea18ae25e98527aa85835c9221ea01b36560b33 (diff) |
Add Caching and replace HttpClientUtil class to external file
Diffstat (limited to 'Source/ExcelDNA')
-rw-r--r-- | Source/ExcelDNA/AddIn.cs | 4 | ||||
-rw-r--r-- | Source/ExcelDNA/Functions.cs | 33 |
2 files changed, 29 insertions, 8 deletions
diff --git a/Source/ExcelDNA/AddIn.cs b/Source/ExcelDNA/AddIn.cs index dd99667..0505e5b 100644 --- a/Source/ExcelDNA/AddIn.cs +++ b/Source/ExcelDNA/AddIn.cs @@ -1,13 +1,17 @@ using ExcelDna.Integration; using ExcelDna.Registration; +using System.Net.Http; namespace Rehau.Sku.Assist { public class AddIn : IExcelAddIn { + public static HttpClient httpClient; + public void AutoOpen() { RegisterFunctions(); + httpClient = new HttpClient(); } public void AutoClose() diff --git a/Source/ExcelDNA/Functions.cs b/Source/ExcelDNA/Functions.cs index a282e3e..db882c5 100644 --- a/Source/ExcelDNA/Functions.cs +++ b/Source/ExcelDNA/Functions.cs @@ -1,19 +1,36 @@ -using AngleSharp.Dom; -using ExcelDna.Integration; -using System.Net.Http; +using ExcelDna.Integration; using System.Threading.Tasks; +using System.Runtime.Caching; namespace Rehau.Sku.Assist { public class Functions { [ExcelFunction] - public static async Task<string> RAUNAME(string request) + public static object RAUNAME(string request) { - Task<string> contentTask = Task.Run(() => SkuAssist.GetContent(request)); - Task<IDocument> documentTask = await contentTask.ContinueWith(content => SkuAssist.GetDocument(content)); - IProduct product = await documentTask.ContinueWith(doc => SkuAssist.GetProductFromDocument(doc.Result)); - return product != null ? product.ToString() : "Не найдено"; + if (MemoryCache.Default.Contains(request)) + return MemoryCache.Default[request].ToString(); + + else + { + object result = ExcelAsyncUtil.Run("Rauname", new[] { request }, + delegate + { + Task<IProduct> product = Task.Run(() => SkuAssist.GetProduct(request)); + return product.Result; + }); + + if (Equals(result, ExcelError.ExcelErrorNA)) + { + return "Загрузка..."; + } + else + { + MemoryCache.Default.Add(request, result, System.DateTime.Now.AddMinutes(10)); + return result == null ? "Не найдено" : result.ToString(); + } + } } } }
\ No newline at end of file |