public static IList <SiteSettings> Deserialize(TextReader reader) { var ser = new XmlSerializer(typeof(SerializableSettings)); SerializableSettings s = ser.Deserialize(reader) as SerializableSettings; if (s != null) { var ctx = new StreamingContext(); foreach (var site in s.Sites) { CallOnDeserializedRecursive(site.Categories, ctx); } return(s.Sites); } return(null); }
public void LoadSites() { // create the configured directories string iconDir = string.IsNullOrEmpty(ThumbsDir) ? string.Empty : Path.Combine(ThumbsDir, @"Icons\"); if (!string.IsNullOrEmpty(iconDir) && !Directory.Exists(iconDir)) { Directory.CreateDirectory(iconDir); } string bannerDir = string.IsNullOrEmpty(ThumbsDir) ? string.Empty : Path.Combine(ThumbsDir, @"Banners\"); if (!string.IsNullOrEmpty(bannerDir) && !Directory.Exists(bannerDir)) { Directory.CreateDirectory(bannerDir); } string cacheDir = string.IsNullOrEmpty(ThumbsDir) ? string.Empty : Path.Combine(ThumbsDir, @"Cache\"); if (!string.IsNullOrEmpty(cacheDir) && !Directory.Exists(cacheDir)) { Directory.CreateDirectory(cacheDir); } try { if (!string.IsNullOrEmpty(DllsDir) && !Directory.Exists(DllsDir)) { Directory.CreateDirectory(DllsDir); } } catch { /* might fail due to UAC */ } string filename = string.IsNullOrEmpty(ConfigDir) ? string.Empty : Path.Combine(ConfigDir, SitesFileName); Stream sitesStream = null; if (string.IsNullOrEmpty(filename) || !File.Exists(filename)) { Log.Info("ConfigFile \"{0}\" was not found. Using embedded resource.", filename); sitesStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("OnlineVideos.OnlineVideoSites.xml"); } else { sitesStream = new FileStream(filename, FileMode.Open, FileAccess.Read); } using (sitesStream) { SiteSettingsList = (BindingList <SiteSettings>)SerializableSettings.Deserialize(new StreamReader(sitesStream)); } Log.Info("Loaded {0} sites from {1}", SiteSettingsList.Count, SitesFileName); }