// Library.cs
//
// Copyright (C) 2008 Amr Hassan
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
//
using System;
using System.Xml;
using System.Collections.Generic;
namespace Lastfm.Services
{
///
/// A user's library.
///
public class Library : Base, IHasURL
{
///
/// The user who owns the library.
///
public User User {get; private set;}
public Library(User user, Session session)
:base(session)
{
this.User = user;
}
public Library(string username, Session session)
:base(session)
{
this.User = new User(username, Session);
}
internal override RequestParameters getParams()
{
RequestParameters p = new Lastfm.RequestParameters();
p["user"] = User.Name;
return p;
}
///
/// String representation of the object.
///
///
/// A
///
public override string ToString()
{
return "The library of " + User.Name;
}
///
/// Add an album to the library.
///
///
/// A
///
public void AddAlbum(Album album)
{
RequestParameters p = getParams();
p["artist"] = album.Artist.Name;
p["album"] = album.Title;
request("library.addAlbum", p);
}
///
/// Add an artist to the library.
///
///
/// A
///
public void AddArtist(Artist artist)
{
RequestParameters p = getParams();
p["artist"] = artist.Name;
request("library.addArtist", p);
}
///
/// Add a track to the library.
///
///
/// A
///
public void AddTrack(Track track)
{
RequestParameters p = getParams();
p["artist"] = track.Artist.Name;
p["track"] = track.Title;
request("library.addTrack", p);
}
///
/// The albums in the library.
///
public LibraryAlbums Albums
{ get { return new LibraryAlbums(this, Session); } }
///
/// The tracks in the library.
///
public LibraryTracks Tracks
{ get { return new LibraryTracks(this, Session); } }
///
/// The artists in the library.
///
public LibraryArtists Artists
{ get { return new LibraryArtists(this, Session); } }
///
/// Returns the Last.fm page of this object.
///
///
/// A
///
///
/// A
///
public string GetURL(SiteLanguage language)
{
return User.GetURL(language) + "/library";
}
///
/// The object's Last.fm page url.
///
public string URL
{ get { return GetURL(SiteLanguage.English); } }
}
}