Exemple #1
0
        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 }.");
        }
Exemple #2
0
        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));
            }
        }
Exemple #3
0
        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;
 }