示例#1
0
 public static IEnumerable <WikipediaResult> Create(WikipediaResponse response)
 {
     foreach (var suggestion in response.Suggestions)
     {
         yield return(new WikipediaResult
         {
             Title = suggestion.Title,
             Description = suggestion.Description,
             Uri = suggestion.Uri,
             Icon = wikiLogo
         });
     }
 }
示例#2
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            try
            {
                var jArray    = JArray.Load(reader);
                var termToken = jArray?[0];
                if (termToken?.Type != JTokenType.String)
                {
                    _logger.Verbose("Expected term to be string, got {tokenType}", termToken?.Type);
                    return(null);
                }
                var result = new WikipediaResponse
                {
                    Term = termToken.Value <string>()
                };
                _logger.Verbose("Preparing response for search term {searchTerm}", result.Term);

                var titleArray = jArray[1];
                foreach (var titleToken in titleArray)
                {
                    result.Suggestions.Add(new WikipediaResponse.WikipediaSuggestion
                    {
                        Title = titleToken.Value <string>()
                    });
                }
                var descriptionArray = jArray[2];
                for (var i = 0; i < descriptionArray.Count(); i++)
                {
                    result.Suggestions[i].Description = descriptionArray[i].Value <string>();
                }
                var uriArray = jArray[3];
                for (var i = 0; i < uriArray.Count(); i++)
                {
                    result.Suggestions[i].Uri = new Uri(uriArray[i].Value <string>());
                }

                return(result);
            }
            catch (Exception e)
            {
                _logger.Warning(e, "An exception was thrown when creating the WikipediaResponse");
                return(null);
            }
        }