// Base.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.Collections.Generic;
using System.Xml;
using System.Web;
namespace Lastfm.Services
{
///
/// A base class for most of the objects.
///
public abstract class Base
{
protected Session Session {get; set;}
public Base(Session session)
{
Session = session;
}
internal abstract RequestParameters getParams();
internal XmlDocument request(string methodName, RequestParameters parameters)
{
return (new Request(methodName, Session, parameters)).execute();
}
internal XmlDocument request(string methodName)
{
return (new Request(methodName, Session, getParams())).execute();
}
internal string extract(XmlNode node, string name, int index)
{
return ((XmlElement)node).GetElementsByTagName(name)[index].InnerText;
}
internal string extract(XmlNode node, string name)
{
return extract((XmlElement)node, name, 0);
}
internal string extract(XmlDocument document, string name)
{
return extract(document.DocumentElement, name);
}
internal string extract(XmlDocument document, string name, int index)
{
return extract(document.DocumentElement, name, index);
}
internal string[] extractAll(XmlNode node, string name, int limitCount)
{
string[] s = extractAll(node, name);
List l = new List();
for(int i = 0; i < limitCount; i++)
l.Add(s[i]);
return l.ToArray();
}
internal string[] extractAll(XmlNode node, string name)
{
List list = new List();
for(int i = 0; i < ((XmlElement)node).GetElementsByTagName(name).Count; i++)
list.Add(extract(node, name, i));
return list.ToArray();
}
internal string[] extractAll(XmlDocument document, string name)
{
return extractAll(document.DocumentElement, name);
}
internal string[] extractAll(XmlDocument document, string name, int limitCount)
{
return extractAll(document.DocumentElement, name, limitCount);
}
internal void requireAuthentication()
{
if(!this.Session.Authenticated)
throw new AuthenticationRequiredException();
}
internal T[] sublist (T[] original, int length)
{
List list = new List();
for(int i=0; i domains = new Dictionary();
domains.Add(SiteLanguage.English, "www.last.fm");
domains.Add(SiteLanguage.German, "www.lastfm.de");
domains.Add(SiteLanguage.Spanish, "www.lastfm.es");
domains.Add(SiteLanguage.French, "www.lastfm.fr");
domains.Add(SiteLanguage.Italian, "www.lastfm.it");
domains.Add(SiteLanguage.Polish, "www.lastfm.pl");
domains.Add(SiteLanguage.Portuguese, "www.lastfm.com.br");
domains.Add(SiteLanguage.Swedish, "www.lastfm.se");
domains.Add(SiteLanguage.Turkish, "www.lastfm.com.tr");
domains.Add(SiteLanguage.Russian, "www.lastfm.ru");
domains.Add(SiteLanguage.Japanese, "www.lastfm.jp");
domains.Add(SiteLanguage.Chinese, "cn.last.fm");
return domains[language];
}
}
}