// FacebookSection.cs
// Facebook/FrameworkWeb/Web
// Copyright (c) 2007, Nikhil Kothari. All Rights Reserved.
//
using System;
using System.Configuration;
using System.Diagnostics;
using System.Web.Configuration;
namespace Facebook.Web.Configuration {
///
/// Represents the Facebook configuration section which contains settings for
/// Facebook applications.
///
public sealed class FacebookSection : ConfigurationSection {
private static readonly ConfigurationProperty ApplicationsProperty =
new ConfigurationProperty("", typeof(FacebookApplicationSettingsCollection), null,
ConfigurationPropertyOptions.IsDefaultCollection);
private static ConfigurationPropertyCollection AllProperties = BuildProperties();
private static FacebookSection SectionInstance;
///
/// The list of applications defined in configuration.
///
[ConfigurationProperty("", IsDefaultCollection = true)]
public FacebookApplicationSettingsCollection Applications {
get {
return (FacebookApplicationSettingsCollection)base[ApplicationsProperty];
}
}
///
protected override ConfigurationPropertyCollection Properties {
get {
return AllProperties;
}
}
private static ConfigurationPropertyCollection BuildProperties() {
ConfigurationPropertyCollection props = new ConfigurationPropertyCollection();
props.Add(ApplicationsProperty);
return props;
}
private static void EnsureSection() {
if (SectionInstance == null) {
SectionInstance = (FacebookSection)WebConfigurationManager.GetSection("facebook");
if (SectionInstance == null) {
SectionInstance = new FacebookSection();
}
}
}
///
/// Gets the application.
///
/// The name.
///
public static FacebookApplicationSettings GetApplication(string name) {
EnsureSection();
return SectionInstance.Applications[name];
}
internal static FacebookApplicationSettingsCollection GetApplications() {
EnsureSection();
return SectionInstance.Applications;
}
}
}