OpenLiveWriter/utilities/BlogRunner/BlogRunner.Core/Config/Config.cs

51 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace BlogRunner.Core.Config
{
[XmlRoot(ElementName="config")]
public class Config
{
public static Config Load(string path, string providersPath)
{
var ser = new XmlSerializer(typeof(Config));
Config config;
using (Stream s = File.OpenRead(path))
config = (Config) ser.Deserialize(s);
XmlDocument providersXml = new XmlDocument();
providersXml.Load(providersPath);
foreach (Provider p in config.Providers)
{
string providerId = p.Id;
XmlText el = (XmlText) providersXml.SelectSingleNode("/providers/provider/id[text()='" + providerId + "']/../clientType/text()");
if (el == null)
{
Console.Error.WriteLine("Unknown provider ID: " + providerId);
throw new ArgumentException("Unknown provider ID: " + providerId);
}
p.ClientType = el.Value;
}
return config;
}
[XmlArray(ElementName="providers")]
[XmlArrayItem(ElementName="provider")]
public Provider[] Providers { get; set; }
public Provider GetProviderById(string providerId)
{
foreach (Provider p in Providers)
if (p.Id == providerId)
return p;
return null;
}
}
}