Esempio n. 1
0
        /// <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);
        }