diff --git a/SkuAssist.cs b/Assistant/SkuAssist.cs similarity index 76% rename from SkuAssist.cs rename to Assistant/SkuAssist.cs index 1c0be3b..1167274 100644 --- a/SkuAssist.cs +++ b/Assistant/SkuAssist.cs @@ -8,25 +8,14 @@ namespace Rehau.Sku.Assist { static class SkuAssist { - static private HttpClient _httpClient; - - public static void EnsureHttpInitialized() + public async static Task GetDocumentAsync(string request, HttpClient httpClient) { - if (_httpClient == null) - { - _httpClient = new HttpClient(); - } - } - - public async static Task GetDocumentAsync(string request) - { - string url = "https://shop-rehau.ru/catalogsearch/result/?q=" + request; + string uri = "https://shop-rehau.ru/catalogsearch/result/?q=" + request; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; - HttpResponseMessage response = await _httpClient.GetAsync(url); + HttpResponseMessage response = await httpClient.GetAsync(uri); response.EnsureSuccessStatusCode(); - IConfiguration config = Configuration.Default; IBrowsingContext context = BrowsingContext.New(config); diff --git a/CancellationDisposable.cs b/CancellationDisposable.cs deleted file mode 100644 index 700a2c2..0000000 --- a/CancellationDisposable.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Threading; - -namespace Rehau.Sku.Assist -{ - sealed class CancellationDisposable : IDisposable - { - - readonly CancellationTokenSource cts; - public CancellationDisposable(CancellationTokenSource cts) - { - if (cts == null) - { - throw new ArgumentNullException("cts"); - } - - this.cts = cts; - } - - public CancellationDisposable() - : this(new CancellationTokenSource()) - { - } - - public CancellationToken Token - { - get { return cts.Token; } - } - - public void Dispose() - { - cts.Cancel(); - } - } - -} - - diff --git a/DefaultDisposable.cs b/DefaultDisposable.cs deleted file mode 100644 index f991181..0000000 --- a/DefaultDisposable.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; - -namespace Rehau.Sku.Assist -{ - sealed class DefaultDisposable : IDisposable - { - - public static readonly DefaultDisposable Instance = new DefaultDisposable(); - - DefaultDisposable() - { - } - - public void Dispose() - { - } - } - -} - - diff --git a/ExcelTaskUtil.cs b/ExcelTaskUtil.cs deleted file mode 100644 index c7d1b94..0000000 --- a/ExcelTaskUtil.cs +++ /dev/null @@ -1,133 +0,0 @@ -using ExcelDna.Integration; -using System.Threading.Tasks; -using System; -using System.Threading; - -namespace Rehau.Sku.Assist -{ - internal static class ExcelTaskUtil - { - public static object Run(string callerFunctionName, object callerParameters, Func> taskSource) - { - return ExcelAsyncUtil.Observe(callerFunctionName, callerParameters, delegate - { - var cts = new CancellationTokenSource(); - var task = taskSource(cts.Token); - return new ExcelTaskObservable(task, cts); - }); - } - - public static object Run(string callerFunctionName, object callerParameters, Func> taskSource) - { - return ExcelAsyncUtil.Observe(callerFunctionName, callerParameters, delegate - { - var task = taskSource(); - return new ExcelTaskObservable(task); - }); - } - - class ExcelTaskObservable : IExcelObservable - { - readonly Task _task; - readonly CancellationTokenSource _cts; - public ExcelTaskObservable(Task task) - { - _task = task; - } - - public ExcelTaskObservable(Task task, CancellationTokenSource cts) - : this(task) - { - _cts = cts; - } - - public IDisposable Subscribe(IExcelObserver observer) - { - switch (_task.Status) - { - case TaskStatus.RanToCompletion: - observer.OnNext(_task.Result); - observer.OnCompleted(); - break; - case TaskStatus.Faulted: - observer.OnError(_task.Exception.InnerException); - break; - case TaskStatus.Canceled: - observer.OnError(new TaskCanceledException(_task)); - break; - default: - _task.ContinueWith(t => - { - switch (t.Status) - { - case TaskStatus.RanToCompletion: - observer.OnNext(t.Result); - observer.OnCompleted(); - break; - case TaskStatus.Faulted: - observer.OnError(t.Exception.InnerException); - break; - case TaskStatus.Canceled: - observer.OnError(new TaskCanceledException(t)); - break; - } - }); - break; - } - - if (_cts != null) - { - return new CancellationDisposable(_cts); - } - - return DefaultDisposable.Instance; - } - } - - sealed class DefaultDisposable : IDisposable - { - - public static readonly DefaultDisposable Instance = new DefaultDisposable(); - - DefaultDisposable() - { - } - - public void Dispose() - { - } - } - - sealed class CancellationDisposable : IDisposable - { - - readonly CancellationTokenSource cts; - public CancellationDisposable(CancellationTokenSource cts) - { - if (cts == null) - { - throw new ArgumentNullException("cts"); - } - - this.cts = cts; - } - - public CancellationDisposable() - : this(new CancellationTokenSource()) - { - } - - public CancellationToken Token - { - get { return cts.Token; } - } - - public void Dispose() - { - cts.Cancel(); - } - } - - } -} - 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() diff --git a/Rehau.Sku.Assist.csproj b/Rehau.Sku.Assist.csproj index 37744c7..2fc2307 100644 --- a/Rehau.Sku.Assist.csproj +++ b/Rehau.Sku.Assist.csproj @@ -58,12 +58,9 @@ - - - - +