Beispiel #1
0
        public async Task <IResult <Chords> > Get(ChordsLink chordsLInk)
        {
            var error = Task.FromResult(Result <Chords> .Error("invalid link"));

            return(await _chordsGrabbers
                   .Where(x => x.CanGrab(chordsLInk.Origin))
                   .Take(1)
                   .Select(async x => (await x.GrabChords(chordsLInk.Url))
                           .Bind(y => new Chords(y, chordsLInk)
                                 .Return())
                           )
                   .Aggregate(error, (x, y) => y));
        }
Beispiel #2
0
        private bool TryGetChordsLink(HtmlNode node, out ChordsLink chordsLink)
        {
            var children = node.ChildNodes;
            var linkNode = children.Single(child => child.HasClass("types")).ChildNodes
                           .SingleOrDefault(x => x.HasClass("ta"));
            var nameNode = children.Single(child => child.HasClass("h1")).ChildNodes
                           .Single(child => child.Name == "a");
            var authorNode = children.Single(child => child.HasClass("h2")).ChildNodes
                             .Single(child => child.Name == "a");

            var url    = linkNode?.GetAttributeValue("href", string.Empty);
            var name   = nameNode.InnerText;
            var author = authorNode.InnerText;

            if (string.IsNullOrWhiteSpace(url))
            {
                chordsLink = null;
                return(false);
            }

            chordsLink = new ChordsLink(_echordsUrl, _thumbnail, new Uri(url), name, author);
            return(true);
        }
 public Task <IResult <Chords> > Get(ChordsLink chordsLInk)
 {
     return(_decoratee.Get(chordsLInk));
 }
Beispiel #4
0
 private static string GetHeader(ChordsLink link)
 {
     return($"{link.SongAuthor} - {link.SongName} \n"
            + $"Origin: {link.Origin} \n"
            + $"Url: {link.Url} \n");
 }
Beispiel #5
0
 public Chords(string chords, ChordsLink sourceLink)
 {
     SourceLink = sourceLink;
     RawChords  = chords;
 }