void IShellSettingsManager.SaveSettings(ShellSettings shellSettings)
        {
            Argument.ThrowIfNull(shellSettings, nameof(shellSettings));
            Argument.ThrowIfNullOrWhiteSpace(shellSettings.Name,
                nameof(shellSettings.Name),
                "The Name property of the supplied ShellSettings object is null or empty; the settings cannot be saved.");

            if (_logger.IsEnabled(LogLevel.Information))
            {
                _logger.LogInformation("Saving ShellSettings for tenant '{0}'", shellSettings.Name);
            }
            var tenantPath = _appDataFolder.MapPath(
                _appDataFolder.Combine(
                    _optionsAccessor.Value.Location, 
                    shellSettings.Name, 
                    string.Format(SettingsFileNameFormat, "txt")));

            var configurationProvider = 
                new YamlConfigurationProvider(tenantPath, false);

            foreach (var key in shellSettings.Keys)
            {
                if (!string.IsNullOrEmpty(shellSettings[key]))
                {
                    configurationProvider.Set(key, shellSettings[key]);
                }
            }

            configurationProvider.Commit();

            if (_logger.IsEnabled(LogLevel.Information))
            {
                _logger.LogInformation("Saved ShellSettings for tenant '{0}'", shellSettings.Name);
            }
        }
        private YamlConfigurationProvider LoadProvider(string yaml)
        {
            var provider = new YamlConfigurationProvider(new YamlConfigurationSource { Optional = true });
            provider.Load(TestStreamHelpers.StringToStream(yaml));

            return provider;
        }
        public void LoadMethodCanHandleEmptyValue()
        {
            var yaml = @"name:";
            var yamlConfigSrc = new YamlConfigurationProvider(TestStreamHelpers.ArbitraryFilePath);

            yamlConfigSrc.Load(TestStreamHelpers.StringToStream(yaml));

            Assert.Equal(string.Empty, yamlConfigSrc.Get("name"));
        }
        public void NonObjectRootIsInvalid()
        {
            var yaml = @"test";
            var yamlConfigPrd = new YamlConfigurationProvider("Foo");

            var exception = Assert.Throws<FormatException>(
                () => yamlConfigPrd.Load(TestStreamHelpers.StringToStream(yaml)));

            Assert.NotNull(exception.Message);
        }
        public void SupportAndIgnoreComments()
        {
            var yaml = @"# Comments
                # Comments
                name: test #foo
                address:
                    street: Something street # Comments
                    zipcode: 12345";
            var yamlConfigPrd = new YamlConfigurationProvider("Foo");

            yamlConfigPrd.Load(TestStreamHelpers.StringToStream(yaml));

            Assert.Equal("test", yamlConfigPrd.Get("name"));
            Assert.Equal("Something street", yamlConfigPrd.Get("address:street"));
            Assert.Equal("12345", yamlConfigPrd.Get("address:zipcode"));
        }
        public void LoadKeyValuePairsFromValidYaml()
        {
            var yaml = @"
            firstname: test
            test.last.name: last.name
            residential.address:
            street.name: Something street
            zipcode: 12345";
            var yamlConfigPrd = new YamlConfigurationProvider(TestStreamHelpers.ArbitraryFilePath);

            yamlConfigPrd.Load(TestStreamHelpers.StringToStream(yaml.TrimStart()));

            Assert.Equal("test", yamlConfigPrd.Get("firstname"));
            Assert.Equal("last.name", yamlConfigPrd.Get("test.last.name"));
            Assert.Equal("Something street", yamlConfigPrd.Get("residential.address:STREET.name"));
            Assert.Equal("12345", yamlConfigPrd.Get("residential.address:zipcode"));
        }
示例#7
0
        public void Foo()
        {
            var yaml = @"---
            name: Default
            dataproviders:
            entityframework-sql:
            connectionstring: Foo
            table-prefix: 12345
            entityframework-inmemory:
            ...";
            File.WriteAllText(_tempFolderName, yaml);

            var yamlConfigPrd = new YamlConfigurationProvider(_tempFolderName);

            var root = new ConfigurationBuilder().Add(yamlConfigPrd).Build();

            var settings = new ShellSettings(root);

            //Assert.Equal(, settings.DataProviders.First())
        }
        public void SupportForMultiple()
        {
            var yaml = @"---
name: test #foo
address:
    home:
        street: Some Home Address
        zipcode: 12345
    work:
        street: Some Work Address
        zipcode: 54321
...";
            var yamlConfigPrd = new YamlConfigurationProvider(TestStreamHelpers.ArbitraryFilePath);

            yamlConfigPrd.Load(TestStreamHelpers.StringToStream(yaml));

            Assert.Equal("Some Home Address", yamlConfigPrd.Get("address:home:street"));
            Assert.Equal("12345", yamlConfigPrd.Get("address:home:zipcode"));
            Assert.Equal("Some Work Address", yamlConfigPrd.Get("address:work:street"));
            Assert.Equal("54321", yamlConfigPrd.Get("address:work:zipcode"));
        }
        void IShellSettingsManager.SaveSettings(ShellSettings shellSettings)
        {
            if (shellSettings == null)
                throw new ArgumentNullException(nameof(shellSettings));
            if (string.IsNullOrWhiteSpace(shellSettings.Name))
                throw new ArgumentException(
                    "The Name property of the supplied ShellSettings object is null or empty; the settings cannot be saved.",
                    nameof(shellSettings.Name));

            _logger.LogInformation("Saving ShellSettings for tenant '{0}'", shellSettings.Name);

            var tenantPath = _appDataFolder.MapPath(_appDataFolder.Combine("Sites", shellSettings.Name));

            var configurationProvider = new YamlConfigurationProvider(
                _appDataFolder.Combine(tenantPath, string.Format(SettingsFileNameFormat, "txt")), false);

            foreach (var key in shellSettings.RootConfiguration.GetChildren()) {
                configurationProvider.Set(key.Key, key.Value);
            }

            configurationProvider.Commit();

            _logger.LogInformation("Saved ShellSettings for tenant '{0}'", shellSettings.Name);
        }