Skip to content

Commit 9e24a71

Browse files
authored
Remove dependency on NewtonSoft.Json (#86)
* Remove dependency on NewtonSoft.Json by using Microsoft.Extensions.Configuration.Json to parse the Json stream into config.
1 parent c49a0f5 commit 9e24a71

20 files changed

Lines changed: 191 additions & 283 deletions

Winton.Extensions.Configuration.Consul.sln

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27130.2024
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29403.142
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{92E73150-9357-4AA6-8C7D-E43709B27A6D}"
77
ProjectSection(SolutionItems) = preProject
@@ -26,6 +26,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Winton.Extensions.Configura
2626
EndProject
2727
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Website", "test\Website\Website.csproj", "{44386D3A-3926-410D-AAD6-3820E17D712A}"
2828
EndProject
29+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net461Website", "test\Net461Website\Net461Website.csproj", "{BC9A5702-6BED-4EC5-82B1-5D342A263EF7}"
30+
EndProject
2931
Global
3032
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3133
Debug|Any CPU = Debug|Any CPU
@@ -44,6 +46,10 @@ Global
4446
{44386D3A-3926-410D-AAD6-3820E17D712A}.Debug|Any CPU.Build.0 = Debug|Any CPU
4547
{44386D3A-3926-410D-AAD6-3820E17D712A}.Release|Any CPU.ActiveCfg = Release|Any CPU
4648
{44386D3A-3926-410D-AAD6-3820E17D712A}.Release|Any CPU.Build.0 = Release|Any CPU
49+
{BC9A5702-6BED-4EC5-82B1-5D342A263EF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
50+
{BC9A5702-6BED-4EC5-82B1-5D342A263EF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
51+
{BC9A5702-6BED-4EC5-82B1-5D342A263EF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
52+
{BC9A5702-6BED-4EC5-82B1-5D342A263EF7}.Release|Any CPU.Build.0 = Release|Any CPU
4753
EndGlobalSection
4854
GlobalSection(SolutionProperties) = preSolution
4955
HideSolutionNode = FALSE
@@ -52,6 +58,7 @@ Global
5258
{B5C08CE5-B60B-485F-B78F-A119B8AA8508} = {03739F78-2460-4F1E-92F2-807CBD8C8AB5}
5359
{6A8821FC-BE1A-4EC8-8A51-73105458CC85} = {972A51CA-2686-4B9B-8BBB-503B2A1BA630}
5460
{44386D3A-3926-410D-AAD6-3820E17D712A} = {972A51CA-2686-4B9B-8BBB-503B2A1BA630}
61+
{BC9A5702-6BED-4EC5-82B1-5D342A263EF7} = {972A51CA-2686-4B9B-8BBB-503B2A1BA630}
5562
EndGlobalSection
5663
GlobalSection(ExtensibilityGlobals) = postSolution
5764
SolutionGuid = {4ADC0DFE-20E4-4A0D-A80C-04164759D9EC}

src/Winton.Extensions.Configuration.Consul/ConsulConfigurationSource.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using Consul;
77
using Microsoft.Extensions.Configuration;
88
using Winton.Extensions.Configuration.Consul.Parsers;
9-
using Winton.Extensions.Configuration.Consul.Parsers.Json;
109

1110
namespace Winton.Extensions.Configuration.Consul
1211
{

src/Winton.Extensions.Configuration.Consul/IConsulConfigurationSource.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using Consul;
88
using Microsoft.Extensions.Configuration;
99
using Winton.Extensions.Configuration.Consul.Parsers;
10-
using Winton.Extensions.Configuration.Consul.Parsers.Json;
1110

1211
namespace Winton.Extensions.Configuration.Consul
1312
{

src/Winton.Extensions.Configuration.Consul/Parsers/Json/JsonFlattener.cs

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/Winton.Extensions.Configuration.Consul/Parsers/Json/JsonPrimitiveVisitor.cs

Lines changed: 0 additions & 69 deletions
This file was deleted.

src/Winton.Extensions.Configuration.Consul/Parsers/Json/JsonConfigurationParser.cs renamed to src/Winton.Extensions.Configuration.Consul/Parsers/JsonConfigurationParser.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
using System.Collections.Generic;
55
using System.IO;
6-
using Newtonsoft.Json;
7-
using Newtonsoft.Json.Linq;
6+
using System.Linq;
7+
using Microsoft.Extensions.Configuration;
88

9-
namespace Winton.Extensions.Configuration.Consul.Parsers.Json
9+
namespace Winton.Extensions.Configuration.Consul.Parsers
1010
{
1111
/// <inheritdoc />
1212
/// <summary>
@@ -17,13 +17,11 @@ public sealed class JsonConfigurationParser : IConfigurationParser
1717
/// <inheritdoc />
1818
public IDictionary<string, string> Parse(Stream stream)
1919
{
20-
using (var streamReader = new StreamReader(stream))
21-
using (var jsonReader = new JsonTextReader(streamReader))
22-
{
23-
jsonReader.DateParseHandling = DateParseHandling.None;
24-
JObject jsonConfig = JObject.Load(jsonReader);
25-
return jsonConfig.Flatten();
26-
}
20+
return new ConfigurationBuilder()
21+
.AddJsonStream(stream)
22+
.Build()
23+
.AsEnumerable()
24+
.ToDictionary(pair => pair.Key, pair => pair.Value);
2725
}
2826
}
2927
}

src/Winton.Extensions.Configuration.Consul/Parsers/Simple/SimpleConfigurationParser.cs renamed to src/Winton.Extensions.Configuration.Consul/Parsers/SimpleConfigurationParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Collections.Generic;
55
using System.IO;
66

7-
namespace Winton.Extensions.Configuration.Consul.Parsers.Simple
7+
namespace Winton.Extensions.Configuration.Consul.Parsers
88
{
99
/// <inheritdoc />
1010
/// <summary>

src/Winton.Extensions.Configuration.Consul/Winton.Extensions.Configuration.Consul.csproj

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,9 @@
3232
<ItemGroup>
3333
<PackageReference Include="Consul" Version="0.7.2.6" />
3434
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.0.0" />
35+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" />
3536
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
3637
</ItemGroup>
3738

38-
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
39-
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
40-
<Reference Include="System.Net.Http" />
41-
<Reference Include="System.Net.Http.WebRequest" />
42-
</ItemGroup>
43-
4439
</Project>
4540

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using Microsoft.AspNetCore.Mvc;
2+
using Microsoft.Extensions.Configuration;
3+
4+
namespace Winton.Extensions.Configuration.Consul.Net461Website.Controllers
5+
{
6+
[ApiController]
7+
[Route("[controller]")]
8+
public sealed class ConfigController : ControllerBase
9+
{
10+
private readonly IConfiguration _configuration;
11+
12+
public ConfigController(IConfiguration configuration)
13+
{
14+
_configuration = configuration;
15+
}
16+
17+
[HttpGet("{key}")]
18+
public IActionResult GetValueForKey(string key)
19+
{
20+
return Ok(_configuration[key]);
21+
}
22+
}
23+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
2+
3+
<PropertyGroup>
4+
<AssemblyName>Winton.Extensions.Configuration.Consul.Test.Net461Website</AssemblyName>
5+
<GenerateDocumentationFile>False</GenerateDocumentationFile>
6+
<NoWarn>$(NoWarn);SA0001;SA1101;SA1309;SA1413;SA1600;SA1633;SA1652</NoWarn>
7+
<RootNamespace>Winton.Extensions.Configuration.Consul.Net461Website</RootNamespace>
8+
<TargetFramework>net461</TargetFramework>
9+
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
10+
</PropertyGroup>
11+
12+
<ItemGroup>
13+
<AdditionalFiles Include="..\..\stylecop.json" />
14+
</ItemGroup>
15+
16+
<ItemGroup>
17+
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
18+
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
19+
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
20+
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc4" />
21+
</ItemGroup>
22+
23+
<ItemGroup>
24+
<ProjectReference Include="..\..\src\Winton.Extensions.Configuration.Consul\Winton.Extensions.Configuration.Consul.csproj" />
25+
</ItemGroup>
26+
27+
</Project>

0 commit comments

Comments
 (0)