mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 10:35:28 +08:00 
			
		
		
		
	Added overload of the IConfigurationBuilder.AddOcelot extension-method that accepts a specific folder (#476)
This commit is contained in:
		
				
					committed by
					
						
						Tom Pallister
					
				
			
			
				
	
			
			
			
						parent
						
							5c940acf0e
						
					
				
				
					commit
					12ef3bc00f
				
			@@ -29,12 +29,17 @@ namespace Ocelot.DependencyInjection
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static IConfigurationBuilder AddOcelot(this IConfigurationBuilder builder)
 | 
					        public static IConfigurationBuilder AddOcelot(this IConfigurationBuilder builder)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return builder.AddOcelot(".");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static IConfigurationBuilder AddOcelot(this IConfigurationBuilder builder, string folder)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            const string pattern = "(?i)ocelot\\.([a-zA-Z0-9]*)(\\.json)$";
 | 
					            const string pattern = "(?i)ocelot\\.([a-zA-Z0-9]*)(\\.json)$";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var reg = new Regex(pattern);
 | 
					            var reg = new Regex(pattern);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var files = Directory.GetFiles(".")
 | 
					            var files = Directory.GetFiles(folder)
 | 
				
			||||||
                .Where(path => reg.IsMatch(path))
 | 
					                .Where(path => reg.IsMatch(path))
 | 
				
			||||||
                .ToList();
 | 
					                .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -43,7 +48,7 @@ namespace Ocelot.DependencyInjection
 | 
				
			|||||||
            foreach (var file in files)
 | 
					            foreach (var file in files)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                // windows and unix sigh...
 | 
					                // windows and unix sigh...
 | 
				
			||||||
                if(files.Count > 1 && (file == "./ocelot.json" || file == ".\\ocelot.json"))
 | 
					                if(files.Count > 1 && (Path.GetFileName(file) == "ocelot.json"))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -53,7 +58,7 @@ namespace Ocelot.DependencyInjection
 | 
				
			|||||||
                var config = JsonConvert.DeserializeObject<FileConfiguration>(lines);
 | 
					                var config = JsonConvert.DeserializeObject<FileConfiguration>(lines);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // windows and unix sigh...
 | 
					                // windows and unix sigh...
 | 
				
			||||||
                if (file == "./ocelot.global.json" || file == ".\\ocelot.global.json")
 | 
					                if (Path.GetFileName(file) == "ocelot.global.json")
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    fileConfiguration.GlobalConfiguration = config.GlobalConfiguration;
 | 
					                    fileConfiguration.GlobalConfiguration = config.GlobalConfiguration;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,14 +32,29 @@
 | 
				
			|||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void should_merge_files()
 | 
					        public void should_merge_files()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            this.Given(_ => GivenMultipleConfigurationFiles())
 | 
					            this.Given(_ => GivenMultipleConfigurationFiles(""))
 | 
				
			||||||
                .When(_ => WhenIAddOcelotConfiguration())
 | 
					                .When(_ => WhenIAddOcelotConfiguration())
 | 
				
			||||||
                .Then(_ => ThenTheConfigsAreMerged())
 | 
					                .Then(_ => ThenTheConfigsAreMerged())
 | 
				
			||||||
                .BDDfy();
 | 
					                .BDDfy();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void GivenMultipleConfigurationFiles()
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void should_merge_files_in_specific_folder()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            string configFolder = "ConfigFiles";
 | 
				
			||||||
 | 
					            this.Given(_ => GivenMultipleConfigurationFiles(configFolder))
 | 
				
			||||||
 | 
					                .When(_ => WhenIAddOcelotConfigurationWithSpecificFolder(configFolder))
 | 
				
			||||||
 | 
					                .Then(_ => ThenTheConfigsAreMerged())
 | 
				
			||||||
 | 
					                .BDDfy();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void GivenMultipleConfigurationFiles(string folder)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!string.IsNullOrEmpty(folder))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Directory.CreateDirectory(folder);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            _globalConfig = new FileConfiguration
 | 
					            _globalConfig = new FileConfiguration
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                GlobalConfiguration = new FileGlobalConfiguration
 | 
					                GlobalConfiguration = new FileGlobalConfiguration
 | 
				
			||||||
@@ -159,10 +174,15 @@
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            File.WriteAllText("ocelot.global.json", JsonConvert.SerializeObject(_globalConfig));
 | 
					            string globalFilename = Path.Combine(folder, "ocelot.global.json");
 | 
				
			||||||
            File.WriteAllText("ocelot.reRoutesA.json", JsonConvert.SerializeObject(_reRouteA));
 | 
					            string reroutesAFilename = Path.Combine(folder, "ocelot.reRoutesA.json");
 | 
				
			||||||
            File.WriteAllText("ocelot.reRoutesB.json", JsonConvert.SerializeObject(_reRouteB));
 | 
					            string reroutesBFilename = Path.Combine(folder, "ocelot.reRoutesB.json");
 | 
				
			||||||
            File.WriteAllText("ocelot.aggregates.json", JsonConvert.SerializeObject(_aggregate));
 | 
					            string aggregatesFilename = Path.Combine(folder, "ocelot.aggregates.json");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            File.WriteAllText(globalFilename, JsonConvert.SerializeObject(_globalConfig));
 | 
				
			||||||
 | 
					            File.WriteAllText(reroutesAFilename, JsonConvert.SerializeObject(_reRouteA));
 | 
				
			||||||
 | 
					            File.WriteAllText(reroutesBFilename, JsonConvert.SerializeObject(_reRouteB));
 | 
				
			||||||
 | 
					            File.WriteAllText(aggregatesFilename, JsonConvert.SerializeObject(_aggregate));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void WhenIAddOcelotConfiguration()
 | 
					        private void WhenIAddOcelotConfiguration()
 | 
				
			||||||
@@ -172,6 +192,13 @@
 | 
				
			|||||||
            _configRoot = builder.Build();
 | 
					            _configRoot = builder.Build();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void WhenIAddOcelotConfigurationWithSpecificFolder(string folder)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            IConfigurationBuilder builder = new ConfigurationBuilder();
 | 
				
			||||||
 | 
					            builder.AddOcelot(folder);
 | 
				
			||||||
 | 
					            _configRoot = builder.Build();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void ThenTheConfigsAreMerged()
 | 
					        private void ThenTheConfigsAreMerged()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var fc = (FileConfiguration)_configRoot.Get(typeof(FileConfiguration));
 | 
					            var fc = (FileConfiguration)_configRoot.Get(typeof(FileConfiguration));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user