diff --git a/src/Ocelot/DependencyInjection/ConfigurationBuilderExtensions.cs b/src/Ocelot/DependencyInjection/ConfigurationBuilderExtensions.cs index 31bced5e..da3a0589 100644 --- a/src/Ocelot/DependencyInjection/ConfigurationBuilderExtensions.cs +++ b/src/Ocelot/DependencyInjection/ConfigurationBuilderExtensions.cs @@ -32,19 +32,32 @@ namespace Ocelot.DependencyInjection var reg = new Regex(pattern); var files = Directory.GetFiles(".") - .Where(path => reg.IsMatch(path)) + .Where(path => reg.IsMatch(path)).Where(x => x.Count(s => s == '.') == 3) .ToList(); + FileConfiguration ocelotConfig = new FileConfiguration(); + foreach (var file in files) { + if(files.Count > 1 && file == "./ocelot.json") + { + continue; + } + var lines = File.ReadAllText(file); var config = JsonConvert.DeserializeObject(lines); + if(file == "./ocelot.global.json") + { + ocelotConfig.GlobalConfiguration = config.GlobalConfiguration; + } + + ocelotConfig.Aggregates.AddRange(config.Aggregates); + ocelotConfig.ReRoutes.AddRange(config.ReRoutes); } - //var load all files with ocelot*.json - //merge these files into one - //save it as ocelot.json + var json = JsonConvert.SerializeObject(ocelotConfig); + File.WriteAllText("ocelot.json", json); builder.AddJsonFile("ocelot.json"); return builder; } diff --git a/test/Ocelot.UnitTests/DependencyInjection/ConfigurationBuilderExtensionsTests.cs b/test/Ocelot.UnitTests/DependencyInjection/ConfigurationBuilderExtensionsTests.cs index 694a3224..8c42b0dc 100644 --- a/test/Ocelot.UnitTests/DependencyInjection/ConfigurationBuilderExtensionsTests.cs +++ b/test/Ocelot.UnitTests/DependencyInjection/ConfigurationBuilderExtensionsTests.cs @@ -73,11 +73,11 @@ namespace Ocelot.UnitTests.DependencyInjection File.WriteAllText("ocelot.global.json", globalJson); var reRouteJson = JsonConvert.SerializeObject(reRoute); - File.WriteAllText("ocelot.reRoute.json", reRouteJson); + File.WriteAllText("ocelot.reRoutes.json", reRouteJson); IConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddOcelot(); - + var configRoot = builder.Build(); } private void GivenTheBaseUrl(string baseUrl)