Exemplo n.º 1
0
        public async Task <Search> Search(string searchText)
        {
            var results = Task.Run(async() =>
            {
                var searchResults = await Policies <SearchResults <Email> > .Complete.ExecuteAsync(async c =>
                                                                                                   await _bus.RequestAsync <SearchRequest, SearchResults <Email> >(new SearchRequest
                {
                    Text = c.OperationKey
                }), new Context(searchText));

                var paths   = searchResults.Results.Select(r => r.Result.Path).ToArray();
                var request = new ResultPreview.Request {
                    path = paths
                };
                var previews = await Policies <ResultPreview> .Complete
                               .WrapAsync(Policy <ResultPreview> .Handle <TimeoutException>().FallbackAsync(new ResultPreview
                {
                    Results = new (string path, string body)[0]
                }))
Exemplo n.º 2
0
        public async Task <SearchResults <Email> > Search(string searchText)
        {
            var searchResults =
                await _bus.RequestAsync <SearchRequest, SearchResults <Common.Models.Email> >(new SearchRequest { Text = searchText });

            var paths   = searchResults.Results.Select(r => r.Result.Path).ToArray();
            var request = new ResultPreview.Request {
                path = paths
            };
            var previews =
                await _bus.RequestAsync <ResultPreview.Request, ResultPreview>(request);

            var emails = searchResults.Results.Join(previews.Results, r => r.Result.Path, r => r.path,
                                                    (result, preview) =>
            {
                var email  = _mapper.Map <Email>(result.Result);
                email.Body = preview.body;
                return(result.Score, email);
            });