51 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|