using System.Collections.Generic; using MusicMetaTagger.Client.AllMusicGuide.RemoteDataAccess.Scraper; using MusicMetaTagger.Core.Model; using MusicMetaTagger.Core.Services; namespace MusicMetaTagger.Client.AllMusicGuide.RemoteDataAccess { /// /// Inspired by this Perl module: http://backpan.perl.org/authors/id/Y/YO/YOHAMED/WWW-AllMusicGuide.html /// public class MusicGuideScraper : IMusicGuide { private readonly IScraper _albumScraper; private readonly IScraper> _albumResultScraper; private readonly IScraper _artistScraper; private readonly IScraper> _artistResultScraper; private readonly IScraper> _discographyScraper; private readonly IScraper> _songResultScraper; private readonly IScraper _songScraper; public MusicGuideScraper(IScraper albumScraper, IScraper> albumResultScraper, IScraper artistScraper, IScraper> artistResultScraper, IScraper> discographyScraper, IScraper> songResultScraper, IScraper songScraper) { _albumScraper = albumScraper; _albumResultScraper = albumResultScraper; _artistScraper = artistScraper; _artistResultScraper = artistResultScraper; _discographyScraper = discographyScraper; _songResultScraper = songResultScraper; _songScraper = songScraper; } public Artist GetArtist(string artistId) { var artist = _artistScraper.Scrape(artistId); artist.Discography = _discographyScraper.Scrape(artistId); return artist; } public Album GetAlbum(string albumId) { return _albumScraper.Scrape(albumId); } public Song GetSong(string songId) { return _songScraper.Scrape(songId); } public List SearchArtist(string artistName) { return _artistResultScraper.Scrape(artistName); } public List SearchAlbum(string albumName) { return _albumResultScraper.Scrape(albumName); } public List SearchSong(string songName) { return _songResultScraper.Scrape(songName); } } }