public async Task <IEnumerable <string> > Handle(ParseTagsRequest request, CancellationToken cancellationToken)
        {
            var links = new List <string>();

            links = request.TagParsers.Aggregate(links,
                                                 (current, parser) => current.Concat(parser.ParseTags(request.HtmlDocument)).ToList());

            return(links);
        }
        public async Task <IEnumerable <string> > Handle(GetLinksRequest request, CancellationToken cancellationToken)
        {
            var getParsingOptionsRequest = new GetParsingOptionsRequest(request.TagOptions);
            var parsingRules             = await _mediator.Send(getParsingOptionsRequest, cancellationToken);

            var parseTagsRequest = new ParseTagsRequest(parsingRules.TagsParsers, request.HtmlDocument);
            var links            = await _mediator.Send(parseTagsRequest, cancellationToken);

            var filterLinksRequest = new FilterLinksRequest(links, parsingRules);
            var filteredLinks      = (await _mediator.Send(filterLinksRequest, cancellationToken)).ToList();

            return(filteredLinks);
        }