/// <summary> /// Обновляет информацию о языках и направлениях перевода в базе /// </summary> public void UpdateLangs(LangInfo langInfo) { var uow = _DbFactory.Create(); uow.Configuration.AutoDetectChangesEnabled = false; ClearTable(uow.Langs); foreach (var l in langInfo.langs) { uow.Langs.Add(new Lang() { Id = l.Key, Name = l.Value }); } ClearTable(uow.Routes); foreach (var r in langInfo.dirs) { if (r == "sl-en" || r == "en-sl") { continue; //требование заказчика – функционал перевода с английского на словенский и наоборот должен быть недоступен } var pos = r.IndexOf('-'); uow.Routes.Add(new Route() { FromLangId = r.Substring(0, pos), ToLangId = r.Substring(pos + 1) }); } uow.ChangeTracker.DetectChanges(); uow.SaveChanges(); }
/// <summary> /// Запрашивает базу языков и направлений перевода с яндекса /// </summary> /// <returns>Структура LangInfo</returns> public async Task <LangInfo> GetLangsInfo() { LangInfo langInfo = null; Task <WebResponse> getResponseTask = null; try { WebRequest request = WebRequest.Create("https://translate.yandex.net/api/v1.5/tr.json/getLangs?" + "key=" + key + "&ui=ru" ); getResponseTask = request.GetResponseAsync(); await getResponseTask; } catch (NotSupportedException respEx) { throw new Exception("Ошибка запроса: " + respEx.Message, respEx); } catch (WebException respEx) { throw new Exception("Ошибка подключения к yandex: " + respEx.Message, respEx); } if (getResponseTask.Status != TaskStatus.Faulted) { WebResponse response = getResponseTask.Result; using (StreamReader stream = new StreamReader(response.GetResponseStream())) { string line; if ((line = stream.ReadLine()) != null) { langInfo = JsonConvert.DeserializeObject <LangInfo>(line); } } } return(langInfo); }