private void GetRandomWord() { var ordbok = Resources.RuntimeData.FolketsOrdbok; var r = new Random().Next(0, ordbok.Words.Count - 1); _ordEntry = ordbok.Words[r]; Log($"Seeding new word from Folketsordbok... New word is: { _ordEntry.Grundform }."); }
private async Task GetDagensOrd() { GetRandomWord(); bool resultFound = false; while (!resultFound) { Log($"Searching on SO for: { _ordEntry.Grundform }..."); var searcher = new SvenskaSearcher(SvenskaKälla.SO); await searcher.SearchAsync(_ordEntry.Grundform); if (searcher.LastResponse == WebscrappingSearcherResponse.WebException) { var timespan = Resources.ConstantData.DagensOrd.IsDebugEnabled ? TimeSpan.FromSeconds(5) : TimeSpan.FromMinutes(5); LogWarning($"Received a WebException. Will try again in { timespan.TotalSeconds } seconds."); await Task.Delay(timespan); } else { if (searcher.LastResponse == WebscrappingSearcherResponse.Successful) { var convertedResult = (SvenskaSearchResult)searcher.LastResult; if (convertedResult.OrdEntries != null && convertedResult.OrdEntries.Count != 0) { Log($"Success! Dagensord is now: { _ordEntry.Grundform }"); _ordEntry = convertedResult.OrdEntries.First(); resultFound = true; } else { var delay = Math.Max(MinDelayBetweenSearches, Resources.ConstantData.DagensOrd.MSDelayBetweenSearches); Log($"Failed to fetch entry from SO. Trying again in { delay }ms..."); GetRandomWord(); await Task.Delay(delay); } } } } using (var sw = File.CreateText(Path)) { sw.Write(JsonConvert.SerializeObject(_ordEntry, Formatting.Indented)); } }
private void LoadDagensOrdFromFile() { if (File.Exists(Path)) { using (var file = File.OpenText(Path)) { _ordEntry = JsonConvert.DeserializeObject <OrdEntry>(file.ReadToEnd()); } Log("Loaded word from file..."); } }
public async Task <ISearcherResult> SearchAsync(string searchTerm) { await Task.Run(() => { OrdEntry foundWord = null; foreach (var word in Resources.RuntimeData.FolketsOrdbok.Words) { if (word.Grundform == searchTerm) { foundWord = word; } } LastResult = new FolketsOrdbokResult(searchTerm, foundWord); }); return(LastResult); }
public FolketsOrdbokResult(string searchTerm, OrdEntry ordEntry) { _searchTerm = searchTerm; _ordEntry = ordEntry; }