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);
}
}
}