protected override async Task QueryAsync(IQuery query, CancellationToken ct) { var searchQuery = _queryParser.Bind(query.Argument, out var freeText); searchQuery.Site = Site; if (string.IsNullOrEmpty(searchQuery.InTitle)) { searchQuery.InTitle = freeText; } var questions = await _stackExchangeClient.SearchAsync(searchQuery, ct); if (!questions.Any()) { foreach (var queryResult in CreateFallbackResult(searchQuery)) { Available(queryResult); } return; } if (query is DefaultQuery) { questions = questions.Take(3).ToList(); } foreach (var queryResult in questions.Select(q => ConvertQuestion(q, query))) { Available(queryResult); } }
public static Task <IList <Question> > SearchAsync(this IStackExchangeClient client, string site, string inTitle, CancellationToken ct = default) { return(client.SearchAsync(new SearchQuery { InTitle = inTitle, Site = site }, ct)); }
public async Task <IEnumerable <QueryResult> > QueryAsync(Query query, CancellationToken ct) { var searchQuery = _queryParser.Bind(query.Argument, out var freeText); searchQuery.Site = Site; if (string.IsNullOrEmpty(searchQuery.InTitle)) { searchQuery.InTitle = freeText; } var questions = await _stackExchangeClient.SearchAsync(searchQuery, ct); if (!questions.Any()) { return(CreateFallbackResult(searchQuery)); } return(questions.Select(question => ConvertQuestion(question, query))); }