diff --git a/nanoFirmwareFlasher.Library/CloudsmithPackageInfo.cs b/nanoFirmwareFlasher.Library/CloudsmithPackageInfo.cs index 35e2d7e..4ff5f7b 100644 --- a/nanoFirmwareFlasher.Library/CloudsmithPackageInfo.cs +++ b/nanoFirmwareFlasher.Library/CloudsmithPackageInfo.cs @@ -3,24 +3,24 @@ // See LICENSE file in the project root for full license information. // -using Newtonsoft.Json; using System; +using System.Text.Json.Serialization; namespace nanoFramework.Tools.FirmwareFlasher { [Serializable] internal class CloudsmithPackageInfo { - [JsonProperty("version")] + [JsonPropertyName("version")] public string Version { get; set; } - [JsonProperty("cdn_url")] + [JsonPropertyName("cdn_url")] public string DownloadUrl { get; set; } - [JsonProperty("name")] + [JsonPropertyName("name")] public string TargetName { get; set; } - [JsonProperty("uploaded_at")] + [JsonPropertyName("uploaded_at")] public DateTime PackageDate { get; set; } } } diff --git a/nanoFirmwareFlasher.Library/FileDeployment/FileDeploymentManager.cs b/nanoFirmwareFlasher.Library/FileDeployment/FileDeploymentManager.cs index 38ded26..6b171bb 100644 --- a/nanoFirmwareFlasher.Library/FileDeployment/FileDeploymentManager.cs +++ b/nanoFirmwareFlasher.Library/FileDeployment/FileDeploymentManager.cs @@ -3,11 +3,11 @@ using System; using System.IO; +using System.Text.Json; using System.Threading.Tasks; using nanoFramework.Tools.Debugger; using nanoFramework.Tools.Debugger.Extensions; using nanoFramework.Tools.FirmwareFlasher.DeploymentHelpers; -using Newtonsoft.Json; namespace nanoFramework.Tools.FirmwareFlasher.FileDeployment { @@ -25,7 +25,12 @@ public class FileDeploymentManager /// public FileDeploymentManager(string configFilePath, string originalPort, VerbosityLevel verbosity) { - _configuration = JsonConvert.DeserializeObject(File.ReadAllText(configFilePath)); + var options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + }; + + _configuration = JsonSerializer.Deserialize(File.ReadAllText(configFilePath), options); _serialPort = string.IsNullOrEmpty(_configuration.SerialPort) ? originalPort : _configuration.SerialPort; _verbosity = verbosity; } diff --git a/nanoFirmwareFlasher.Library/FirmwareArchiveManager.cs b/nanoFirmwareFlasher.Library/FirmwareArchiveManager.cs index c5b1aa6..5d6360c 100644 --- a/nanoFirmwareFlasher.Library/FirmwareArchiveManager.cs +++ b/nanoFirmwareFlasher.Library/FirmwareArchiveManager.cs @@ -4,8 +4,8 @@ using System; using System.Collections.Generic; using System.IO; +using System.Text.Json; using System.Threading.Tasks; -using Newtonsoft.Json; namespace nanoFramework.Tools.FirmwareFlasher { @@ -55,7 +55,12 @@ public List GetTargetList( { foreach (string filePath in Directory.EnumerateFiles(_archivePath, $"*{INFOFILE_EXTENSION}")) { - PersistedPackageInformation packageInformation = JsonConvert.DeserializeObject(File.ReadAllText(filePath)); + var options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + }; + + PersistedPackageInformation packageInformation = JsonSerializer.Deserialize(File.ReadAllText(filePath), options); if (packageInformation.IsPreview == preview && (platform is null || platform.Value.ToString().Equals(packageInformation.Platform, StringComparison.OrdinalIgnoreCase))) { @@ -83,7 +88,7 @@ public CloudSmithPackageDetail GetLatestVersion( { foreach (string filePath in Directory.EnumerateFiles(_archivePath, $"{target}-*{INFOFILE_EXTENSION}")) { - PersistedPackageInformation packageInformation = JsonConvert.DeserializeObject(File.ReadAllText(filePath)); + PersistedPackageInformation packageInformation = JsonSerializer.Deserialize(File.ReadAllText(filePath)); if (packageInformation is not null && packageInformation.IsPreview == preview) { if (Version.TryParse(packageInformation.Version, out Version version)) @@ -192,7 +197,7 @@ public async Task DownloadFirmwareFromRepository( }; File.WriteAllText( $"{(fwFilePath.EndsWith(".zip") ? fwFilePath : Path.GetDirectoryName(fwFilePath))}{INFOFILE_EXTENSION}", - JsonConvert.SerializeObject(packageInformation) + JsonSerializer.Serialize(packageInformation) ); } return result; diff --git a/nanoFirmwareFlasher.Library/FirmwarePackage.cs b/nanoFirmwareFlasher.Library/FirmwarePackage.cs index 269db79..4bee53f 100644 --- a/nanoFirmwareFlasher.Library/FirmwarePackage.cs +++ b/nanoFirmwareFlasher.Library/FirmwarePackage.cs @@ -8,12 +8,12 @@ using System.Linq; using System.Net.Http; using System.Reflection; +using System.Text.Json; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using Microsoft.ApplicationInsights.DataContracts; using nanoFramework.Tools.Debugger; -using Newtonsoft.Json; namespace nanoFramework.Tools.FirmwareFlasher { @@ -198,7 +198,12 @@ public static List GetTargetList( return targetPackages; } - List deserializedPackages = JsonConvert.DeserializeObject>(responseBody); + var options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + }; + + List deserializedPackages = JsonSerializer.Deserialize>(responseBody, options); targetPackages.AddRange(from p in deserializedPackages select new CloudSmithPackageDetail() { @@ -660,7 +665,7 @@ private static async Task GetDownloadUrlAsync( else { // parse response - packageInfo = JsonConvert.DeserializeObject>(responseBody); + packageInfo = JsonSerializer.Deserialize>(responseBody); // sanity check if (packageInfo.Count != 1) diff --git a/nanoFirmwareFlasher.Library/NetworkDeployment/NetworkDeploymentManager.cs b/nanoFirmwareFlasher.Library/NetworkDeployment/NetworkDeploymentManager.cs index 347653b..c9ece52 100644 --- a/nanoFirmwareFlasher.Library/NetworkDeployment/NetworkDeploymentManager.cs +++ b/nanoFirmwareFlasher.Library/NetworkDeployment/NetworkDeploymentManager.cs @@ -5,11 +5,11 @@ using System.IO; using System.Net; using System.Text; +using System.Text.Json; using System.Threading; using System.Threading.Tasks; using nanoFramework.Tools.Debugger; using nanoFramework.Tools.FirmwareFlasher.DeploymentHelpers; -using Newtonsoft.Json; namespace nanoFramework.Tools.FirmwareFlasher.NetworkDeployment { @@ -30,7 +30,12 @@ public class NetworkDeploymentManager /// The verbosity level. public NetworkDeploymentManager(string configFilePath, string originalPort, VerbosityLevel verbosity) { - _configuration = JsonConvert.DeserializeObject(File.ReadAllText(configFilePath)); + var options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + }; + + _configuration = JsonSerializer.Deserialize(File.ReadAllText(configFilePath), options); _serialPort = string.IsNullOrEmpty(_configuration.SerialPort) ? originalPort : _configuration.SerialPort; _verbosity = verbosity; } @@ -299,10 +304,10 @@ public async Task DeployAsync() // Read the device certificates from the file deviceCertificatesBytes = File.ReadAllBytes(_configuration.DeviceCertificatesPath); } - - CheckNullPemTermination(deviceCertificatesBytes); + if (deviceCertificatesBytes != null) { + CheckNullPemTermination(deviceCertificatesBytes); // deploy the client certificates OutputWriter.Write($"Updating client certificates..."); var clientCertificates = device.DebugEngine.GetAllX509DeviceCertificates(); @@ -339,10 +344,10 @@ public async Task DeployAsync() // Read the CA certificates from the file caCertificatesBytes = File.ReadAllBytes(_configuration.CACertificatesPath); } - - CheckNullPemTermination(caCertificatesBytes); + if (caCertificatesBytes != null) { + CheckNullPemTermination(caCertificatesBytes); // deploy the client certificates OutputWriter.Write($"Updating client certificates..."); var caCertificates = device.DebugEngine.GetAllX509Certificates(); diff --git a/nanoFirmwareFlasher.Library/nanoFirmwareFlasher.Library.csproj b/nanoFirmwareFlasher.Library/nanoFirmwareFlasher.Library.csproj index 6ad585a..7e63972 100644 --- a/nanoFirmwareFlasher.Library/nanoFirmwareFlasher.Library.csproj +++ b/nanoFirmwareFlasher.Library/nanoFirmwareFlasher.Library.csproj @@ -63,7 +63,6 @@ - diff --git a/nanoFirmwareFlasher.Library/packages.lock.json b/nanoFirmwareFlasher.Library/packages.lock.json index 20e6517..0659abf 100644 --- a/nanoFirmwareFlasher.Library/packages.lock.json +++ b/nanoFirmwareFlasher.Library/packages.lock.json @@ -50,12 +50,6 @@ "resolved": "3.6.146", "contentHash": "W1eQ8hD9Y/cZ2+ilgxECl003xr1hybpN3fMxoTlMqg++BixETBMWzS4y9s08oHJKXgKtudsoxhITNOEf1OR66w==" }, - "Newtonsoft.Json": { - "type": "Direct", - "requested": "[13.0.3, )", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, "System.ComponentModel.Annotations": { "type": "Direct", "requested": "[5.0.0, )", @@ -304,12 +298,6 @@ "resolved": "3.6.146", "contentHash": "W1eQ8hD9Y/cZ2+ilgxECl003xr1hybpN3fMxoTlMqg++BixETBMWzS4y9s08oHJKXgKtudsoxhITNOEf1OR66w==" }, - "Newtonsoft.Json": { - "type": "Direct", - "requested": "[13.0.3, )", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, "System.ComponentModel.Annotations": { "type": "Direct", "requested": "[5.0.0, )", diff --git a/nanoFirmwareFlasher.Tool/Program.cs b/nanoFirmwareFlasher.Tool/Program.cs index 7f28b3f..3393e21 100644 --- a/nanoFirmwareFlasher.Tool/Program.cs +++ b/nanoFirmwareFlasher.Tool/Program.cs @@ -10,6 +10,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Reflection; +using System.Text.Json; +using System.Text.Json.Nodes; using System.Threading.Tasks; using CommandLine; using CommandLine.Text; @@ -17,7 +19,6 @@ using nanoFramework.Tools.FirmwareFlasher.Extensions; using nanoFramework.Tools.FirmwareFlasher.FileDeployment; using nanoFramework.Tools.FirmwareFlasher.NetworkDeployment; -using Newtonsoft.Json; namespace nanoFramework.Tools.FirmwareFlasher { @@ -130,8 +131,13 @@ private static void CheckVersion() HttpResponseMessage response = client.GetAsync("https://api.github.com/repos/nanoframework/nanoFirmwareFlasher/releases/latest").Result; - dynamic responseContent = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result); - string tagName = responseContent.tag_name.ToString(); + var options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + }; + + JsonNode responseContent = JsonSerializer.Deserialize(response.Content.ReadAsStringAsync().Result, options); + string tagName = responseContent["tag_name"].ToString(); latestVersion = Version.Parse(tagName.Substring(1)); } diff --git a/nanoFirmwareFlasher.Tool/packages.lock.json b/nanoFirmwareFlasher.Tool/packages.lock.json index 3fe4949..9cf65d1 100644 --- a/nanoFirmwareFlasher.Tool/packages.lock.json +++ b/nanoFirmwareFlasher.Tool/packages.lock.json @@ -133,11 +133,6 @@ "resolved": "1.1.3", "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, "Polly": { "type": "Transitive", "resolved": "7.2.4", @@ -734,7 +729,6 @@ "Microsoft.ApplicationInsights": "[2.22.0, )", "Microsoft.Extensions.Configuration": "[8.0.0, )", "Microsoft.Extensions.Configuration.Json": "[8.0.1, )", - "Newtonsoft.Json": "[13.0.3, )", "System.ComponentModel.Annotations": "[5.0.0, )", "System.IO.Ports": "[8.0.0, )", "System.Net.Http": "[4.3.4, )",