diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Services/RhDatabaseClient.cs | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/src/Services/RhDatabaseClient.cs b/src/Services/RhDatabaseClient.cs index 1776731..8ce88f1 100644 --- a/src/Services/RhDatabaseClient.cs +++ b/src/Services/RhDatabaseClient.cs @@ -1,6 +1,7 @@ using Newtonsoft.Json; using RhSolutions.AddIn; using RhSolutions.Models; +using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; @@ -14,22 +15,48 @@ namespace RhSolutions.Services public static async Task<object> GetProduct(string line) { - string request = @"https://rh.cebotari.ru/api/search?query=" + line; + string request = string.Empty; - string response = await httpClient.GetStringAsync(request); + if (line.IsRehauSku()) + { + request = @"https://rh.cebotari.ru/api/products/" + line; + } - var products = JsonConvert.DeserializeObject<IEnumerable<Product>>(response); + else + { + request = @"https://rh.cebotari.ru/api/search?query=" + line; + } - var product = products.FirstOrDefault(); + var response = await httpClient.GetAsync(request); - if (product == null) + try { - return null; + response.EnsureSuccessStatusCode(); + string json = await response.Content.ReadAsStringAsync(); + var product = JsonConvert.DeserializeObject<IEnumerable<Product>>(json) + .FirstOrDefault(); + + if (product == null) + { + return null; + } + else + { + if (line.IsRehauSku()) + { + return product.Name; + } + else + { + return $"{product.ProductSku} {product.Name}"; + } + } } - else + catch { - return $"{product.ProductSku} {product.Name}"; + return $"Ошибка сервера {response.StatusCode}"; } + } } }
\ No newline at end of file |