public static MyInfoConnector Create(string path)
        {
            var map = new ExeConfigurationFileMap()
            {
                ExeConfigFilename = path
            };
            var libConfig = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
            var section   = (libConfig.GetSection("appSettings") as AppSettingsSection);
            var config    = MyInfoConnectorConfig.Load(section);

            return(Create(config));
        }
        /// <summary>
        /// Load from callbacks which allows the consuming code to dynamically change response depending on environment
        /// for example - decrypt production password
        /// </summary>
        public static MyInfoConnectorConfig Load(Func <string, string> getSetting)
        {
            var output = new MyInfoConnectorConfig();

            output.PrivateKeyFilename        = getSetting("PrivateKeyFilename");
            output.PrivateKeyPassword        = getSetting("PrivateKeyPassword");
            output.PublicCertificateFilename = getSetting("PublicCertificateFilename");

            output.ClientId     = getSetting("ClientId");
            output.ClientSecret = getSetting("ClientSecret");
            output.AttributeCsv = getSetting("AttributeCsv");
            output.Environment  = getSetting("Environment");
            output.TokenUrl     = getSetting("TokenUrl");
            output.PersonUrl    = getSetting("PersonUrl");
            output.AuthoriseUrl = getSetting("AuthoriseUrl");
            output.Purpose      = getSetting("Purpose");

            return(output);
        }
 private MyInfoConnector(MyInfoConnectorConfig config)
 {
     _config = config;
 }
 public static MyInfoConnector Create(MyInfoConnectorConfig config)
 {
     return(new MyInfoConnector(config));
 }