From 2fbb8dfc6da530958fada133dbf834b087b5ada1 Mon Sep 17 00:00:00 2001 From: ats-ccochran Date: Sat, 15 Jul 2017 22:18:07 -0500 Subject: [PATCH 1/4] Minor formatting cleanup, fixed line termination issues in some files, renamed base classes and implemented consistently, minor refactorings. Updated to .NET 4.7. --- .gitignore | 2 +- .vs/ProjectSettings.json | 3 + .vs/VSWorkspaceState.json | 8 + .vs/config/applicationhost.config | 1031 +++++++++++++++++ .vs/slnx.sqlite | Bin 0 -> 602112 bytes IotaCSharpApi/Api/Core/AddNeighborsRequest.cs | 5 +- .../Api/Core/AddNeighborsResponse.cs | 3 +- .../Api/Core/AttachToTangleRequest.cs | 5 +- .../Api/Core/AttachToTangleResponse.cs | 2 +- .../Api/Core/BroadcastTransactionsRequest.cs | 2 +- .../Api/Core/BroadcastTransactionsResponse.cs | 2 +- IotaCSharpApi/Api/Core/EnumHelper.cs | 5 +- IotaCSharpApi/Api/Core/ErrorResponse.cs | 6 + .../Api/Core/FindTransactionsRequest.cs | 2 +- .../Api/Core/FindTransactionsResponse.cs | 2 +- IotaCSharpApi/Api/Core/GenericIotaCoreApi.cs | 10 +- IotaCSharpApi/Api/Core/GetBalancesRequest.cs | 80 +- IotaCSharpApi/Api/Core/GetBalancesResponse.cs | 2 +- .../Api/Core/GetInclusionStatesRequest.cs | 4 +- .../Api/Core/GetInclusionStatesResponse.cs | 14 +- IotaCSharpApi/Api/Core/GetNeighborsRequest.cs | 4 +- .../Api/Core/GetNeighborsResponse.cs | 22 +- IotaCSharpApi/Api/Core/GetNodeInfoRequest.cs | 2 +- IotaCSharpApi/Api/Core/GetNodeInfoResponse.cs | 4 +- IotaCSharpApi/Api/Core/GetTipsRequest.cs | 20 +- IotaCSharpApi/Api/Core/GetTipsResponse.cs | 36 +- .../Core/GetTransactionsToApproveRequest.cs | 38 +- .../Core/GetTransactionsToApproveResponse.cs | 52 +- IotaCSharpApi/Api/Core/GetTrytesRequest.cs | 26 +- IotaCSharpApi/Api/Core/GetTrytesResponse.cs | 36 +- .../Core/InterruptAttachingToTangleRequest.cs | 18 +- .../InterruptAttachingToTangleResponse.cs | 12 +- IotaCSharpApi/Api/Core/IotaRequestBase.cs | 25 + IotaCSharpApi/Api/Core/IotaResponseBase.cs | 16 + .../Api/Core/RemoveNeighborsRequest.cs | 4 +- .../Api/Core/RemoveNeighborsResponse.cs | 26 +- .../Api/Core/StoreTransactionsRequest.cs | 44 +- .../Api/Core/StoreTransactionsResponse.cs | 8 +- .../Api/Exception/IllegalAccessError.cs | 1 - .../Api/Exception/IllegalStateException.cs | 4 +- .../Api/Exception/InvalidTryteException.cs | 1 - IotaCSharpApi/Api/IotaApi.cs | 60 +- IotaCSharpApi/Api/Model/Bundle.cs | 9 +- IotaCSharpApi/Api/Model/Input.cs | 1 - IotaCSharpApi/Api/Model/Neighbor.cs | 30 +- IotaCSharpApi/Api/Utils/Checksum.cs | 8 +- IotaCSharpApi/Api/Utils/Converter.cs | 5 + IotaCSharpApi/Api/Utils/InputValidator.cs | 7 +- IotaCSharpApi/Api/Utils/IotaApiUtils.cs | 34 +- IotaCSharpApi/Api/Utils/IotaUnitConverter.cs | 1 + IotaCSharpApi/Api/Utils/TrytesConverter.cs | 3 - IotaCSharpApi/App.config | 2 +- IotaCSharpApi/IotaCSharpApi.csproj | 22 +- IotaCSharpApi/Package.nuspec | 8 +- IotaCSharpApi/packages.config | 8 +- IotaCSharpApiUnitTests/Api/IotaApiTests.cs | 24 +- .../IotaCSharpApiUnitTests.csproj | 4 +- 57 files changed, 1440 insertions(+), 373 deletions(-) create mode 100644 .vs/ProjectSettings.json create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/config/applicationhost.config create mode 100644 .vs/slnx.sqlite create mode 100644 IotaCSharpApi/Api/Core/IotaRequestBase.cs create mode 100644 IotaCSharpApi/Api/Core/IotaResponseBase.cs diff --git a/.gitignore b/.gitignore index 2b736b4..74c62fe 100644 --- a/.gitignore +++ b/.gitignore @@ -97,7 +97,7 @@ publish/ # NuGet Packages Directory ## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ +packages/ # Windows Azure Build Output csx diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..b63c7c0 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,8 @@ +{ + "ExpandedNodes": [ + "", + "\\IotaCSharpApi" + ], + "SelectedNode": "\\IotaApi.sln", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/config/applicationhost.config b/.vs/config/applicationhost.config new file mode 100644 index 0000000..4b9bf47 --- /dev/null +++ b/.vs/config/applicationhost.config @@ -0,0 +1,1031 @@ + + + + + + + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..d30d2886f1dd3334c1d42bb3178950270e2d85f6 GIT binary patch literal 602112 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%0DOqQCMRmX~&H@Kov^E-}gvC$|C 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 /// This class represents the core API request 'AddNeighbors'. /// It is used to add a neighbor to the node /// - /// - public class AddNeighborsRequest : IotaRequest + /// + public class AddNeighborsRequest : IotaRequestBase { ///

/// Gets or sets the uris. diff --git a/IotaCSharpApi/Api/Core/AddNeighborsResponse.cs b/IotaCSharpApi/Api/Core/AddNeighborsResponse.cs index 1257e4f..aed7926 100644 --- a/IotaCSharpApi/Api/Core/AddNeighborsResponse.cs +++ b/IotaCSharpApi/Api/Core/AddNeighborsResponse.cs @@ -1,10 +1,9 @@ namespace Iota.Lib.CSharp.Api.Core { - /// /// Response of /// - public class AddNeighborsResponse + public class AddNeighborsResponse : IotaResponseBase { /// /// Gets the number of added neighbors. diff --git a/IotaCSharpApi/Api/Core/AttachToTangleRequest.cs b/IotaCSharpApi/Api/Core/AttachToTangleRequest.cs index d78fa74..5fc7639 100644 --- a/IotaCSharpApi/Api/Core/AttachToTangleRequest.cs +++ b/IotaCSharpApi/Api/Core/AttachToTangleRequest.cs @@ -1,11 +1,10 @@ namespace Iota.Lib.CSharp.Api.Core { - /// /// This class represents the core API request 'AttachToTangle'. /// It is used to attach trytes to the tangle. /// - public class AttachToTangleRequest : IotaRequest + public class AttachToTangleRequest : IotaRequestBase { private const int MinWeightMagnitudeMin = 18; private int _minWeightMagnitude = MinWeightMagnitudeMin; @@ -34,7 +33,7 @@ public AttachToTangleRequest(string trunkTransaction, string branchTransaction, /// public int MinWeightMagnitude { - get { return _minWeightMagnitude; } + get => _minWeightMagnitude; set { if (value > MinWeightMagnitudeMin) diff --git a/IotaCSharpApi/Api/Core/AttachToTangleResponse.cs b/IotaCSharpApi/Api/Core/AttachToTangleResponse.cs index 6c91c0f..a402961 100644 --- a/IotaCSharpApi/Api/Core/AttachToTangleResponse.cs +++ b/IotaCSharpApi/Api/Core/AttachToTangleResponse.cs @@ -5,7 +5,7 @@ namespace Iota.Lib.CSharp.Api.Core /// /// Response of /// - public class AttachToTangleResponse + public class AttachToTangleResponse : IotaResponseBase { /// /// Gets or sets the trytes. diff --git a/IotaCSharpApi/Api/Core/BroadcastTransactionsRequest.cs b/IotaCSharpApi/Api/Core/BroadcastTransactionsRequest.cs index 0a8b6ec..b96febd 100644 --- a/IotaCSharpApi/Api/Core/BroadcastTransactionsRequest.cs +++ b/IotaCSharpApi/Api/Core/BroadcastTransactionsRequest.cs @@ -5,7 +5,7 @@ namespace Iota.Lib.CSharp.Api.Core /// /// Broadcast a list of transactions to all neighbors. The input trytes for this call are provided by attachToTangle /// - public class BroadcastTransactionsRequest : IotaRequest + public class BroadcastTransactionsRequest : IotaRequestBase { /// /// Initializes a new instance of the class. diff --git a/IotaCSharpApi/Api/Core/BroadcastTransactionsResponse.cs b/IotaCSharpApi/Api/Core/BroadcastTransactionsResponse.cs index 36d4b39..d690a8b 100644 --- a/IotaCSharpApi/Api/Core/BroadcastTransactionsResponse.cs +++ b/IotaCSharpApi/Api/Core/BroadcastTransactionsResponse.cs @@ -3,7 +3,7 @@ /// /// Response of /// - public class BroadcastTransactionsResponse + public class BroadcastTransactionsResponse : IotaResponseBase { // empty } diff --git a/IotaCSharpApi/Api/Core/EnumHelper.cs b/IotaCSharpApi/Api/Core/EnumHelper.cs index c5b9a41..dda8c6e 100644 --- a/IotaCSharpApi/Api/Core/EnumHelper.cs +++ b/IotaCSharpApi/Api/Core/EnumHelper.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel; +using System.Linq; using System.Reflection; namespace Iota.Lib.CSharp.Api.Core @@ -20,11 +21,11 @@ public static string GetCommandString(this Enum en) MemberInfo[] memInfo = type.GetMember(en.ToString()); - if (memInfo != null && memInfo.Length > 0) + if (memInfo.Any()) { object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); - if (attrs != null && attrs.Length > 0) + if (attrs.Any()) { return ((DescriptionAttribute) attrs[0]).Description; } diff --git a/IotaCSharpApi/Api/Core/ErrorResponse.cs b/IotaCSharpApi/Api/Core/ErrorResponse.cs index c9382c1..c0e55ad 100644 --- a/IotaCSharpApi/Api/Core/ErrorResponse.cs +++ b/IotaCSharpApi/Api/Core/ErrorResponse.cs @@ -1,7 +1,13 @@ namespace Iota.Lib.CSharp.Api.Core { + /// + /// A simple class to hold an error message. + /// internal class ErrorResponse { + /// + /// A string representing the error that occurred. + /// public string Error { get; set; } } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/FindTransactionsRequest.cs b/IotaCSharpApi/Api/Core/FindTransactionsRequest.cs index 1e8ba82..076890f 100644 --- a/IotaCSharpApi/Api/Core/FindTransactionsRequest.cs +++ b/IotaCSharpApi/Api/Core/FindTransactionsRequest.cs @@ -5,7 +5,7 @@ namespace Iota.Lib.CSharp.Api.Core /// /// This class represents the core api request 'FindTransactions' /// - public class FindTransactionsRequest : IotaRequest + public class FindTransactionsRequest : IotaRequestBase { /// /// Initializes a new instance of the class. diff --git a/IotaCSharpApi/Api/Core/FindTransactionsResponse.cs b/IotaCSharpApi/Api/Core/FindTransactionsResponse.cs index c79a844..01e3994 100644 --- a/IotaCSharpApi/Api/Core/FindTransactionsResponse.cs +++ b/IotaCSharpApi/Api/Core/FindTransactionsResponse.cs @@ -5,7 +5,7 @@ namespace Iota.Lib.CSharp.Api.Core /// /// Response of /// - public class FindTransactionsResponse + public class FindTransactionsResponse : IotaResponseBase { /// /// Gets or sets the hashes. diff --git a/IotaCSharpApi/Api/Core/GenericIotaCoreApi.cs b/IotaCSharpApi/Api/Core/GenericIotaCoreApi.cs index 67acac7..6f01ec9 100644 --- a/IotaCSharpApi/Api/Core/GenericIotaCoreApi.cs +++ b/IotaCSharpApi/Api/Core/GenericIotaCoreApi.cs @@ -29,10 +29,7 @@ public GenericIotaCoreApi(string host, int port) /// /// The hostname. /// - public string Hostname - { - get { return host; } - } + public string Hostname => host; /// /// Gets the port. @@ -40,10 +37,7 @@ public string Hostname /// /// The port. /// - public int Port - { - get { return port; } - } + public int Port => port; /// /// Requests the specified request. diff --git a/IotaCSharpApi/Api/Core/GetBalancesRequest.cs b/IotaCSharpApi/Api/Core/GetBalancesRequest.cs index 3c15f0b..b1cce8c 100644 --- a/IotaCSharpApi/Api/Core/GetBalancesRequest.cs +++ b/IotaCSharpApi/Api/Core/GetBalancesRequest.cs @@ -1,38 +1,38 @@ -using System.Collections.Generic; - -namespace Iota.Lib.CSharp.Api.Core -{ - /// - /// This class represents the core api request 'GetBalances' - /// - public class GetBalancesRequest : IotaRequest - { - /// - /// Initializes a new instance of the class. - /// - /// The addresses. - /// The threshold. - public GetBalancesRequest(List addresses, long threshold = 100) - : base(Core.Command.GetBalances.GetCommandString()) - { - Addresses = addresses; - Threshold = threshold; - } - - /// - /// Gets the threshold. - /// - /// - /// The threshold. - /// - public long Threshold { get; } - - /// - /// Gets the addresses. - /// - /// - /// The addresses. - /// +using System.Collections.Generic; + +namespace Iota.Lib.CSharp.Api.Core +{ + /// + /// This class represents the core api request 'GetBalances' + /// + public class GetBalancesRequest : IotaRequestBase + { + /// + /// Initializes a new instance of the class. + /// + /// The addresses. + /// The threshold. + public GetBalancesRequest(List addresses, long threshold = 100) + : base(Core.Command.GetBalances.GetCommandString()) + { + Addresses = addresses; + Threshold = threshold; + } + + /// + /// Gets the threshold. + /// + /// + /// The threshold. + /// + public long Threshold { get; } + + /// + /// Gets the addresses. + /// + /// + /// The addresses. + /// public List Addresses { get; } /// @@ -41,9 +41,9 @@ public GetBalancesRequest(List addresses, long threshold = 100) /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(Threshold)}: {Threshold}, {nameof(Addresses)}: {string.Join(",",Addresses)}"; - } - } + public override string ToString() + { + return $"{nameof(Threshold)}: {Threshold}, {nameof(Addresses)}: {string.Join(",",Addresses)}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/GetBalancesResponse.cs b/IotaCSharpApi/Api/Core/GetBalancesResponse.cs index 81ff472..414059e 100644 --- a/IotaCSharpApi/Api/Core/GetBalancesResponse.cs +++ b/IotaCSharpApi/Api/Core/GetBalancesResponse.cs @@ -5,7 +5,7 @@ namespace Iota.Lib.CSharp.Api.Core /// /// Response of /// - public class GetBalancesResponse : IotaResponse + public class GetBalancesResponse : IotaResponseBase { /// /// Gets or sets the balances. diff --git a/IotaCSharpApi/Api/Core/GetInclusionStatesRequest.cs b/IotaCSharpApi/Api/Core/GetInclusionStatesRequest.cs index 09b100a..f0321ac 100644 --- a/IotaCSharpApi/Api/Core/GetInclusionStatesRequest.cs +++ b/IotaCSharpApi/Api/Core/GetInclusionStatesRequest.cs @@ -3,8 +3,8 @@ /// /// This class represents the core API request 'GetInclusionStates' /// - /// - public class GetInclusionStatesRequest : IotaRequest + /// + public class GetInclusionStatesRequest : IotaRequestBase { /// /// Initializes a new instance of the class. diff --git a/IotaCSharpApi/Api/Core/GetInclusionStatesResponse.cs b/IotaCSharpApi/Api/Core/GetInclusionStatesResponse.cs index f17b50c..a92dda9 100644 --- a/IotaCSharpApi/Api/Core/GetInclusionStatesResponse.cs +++ b/IotaCSharpApi/Api/Core/GetInclusionStatesResponse.cs @@ -1,12 +1,12 @@ -using System.Collections.Generic; - -namespace Iota.Lib.CSharp.Api.Core +using System.Collections.Generic; + +namespace Iota.Lib.CSharp.Api.Core { /// /// This class represents the response of /// - /// - public class GetInclusionStatesResponse : IotaResponse + /// + public class GetInclusionStatesResponse : IotaResponseBase { /// /// Gets or sets the states. @@ -14,6 +14,6 @@ public class GetInclusionStatesResponse : IotaResponse /// /// The states. /// - public List States { get; set; } - } + public List States { get; set; } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/GetNeighborsRequest.cs b/IotaCSharpApi/Api/Core/GetNeighborsRequest.cs index 2056c79..f7feed0 100644 --- a/IotaCSharpApi/Api/Core/GetNeighborsRequest.cs +++ b/IotaCSharpApi/Api/Core/GetNeighborsRequest.cs @@ -3,8 +3,8 @@ /// /// This class represents the core API request 'GetNeighbors' /// - /// - public class GetNeighborsRequest : IotaRequest + /// + public class GetNeighborsRequest : IotaRequestBase { /// /// Initializes a new instance of the class. diff --git a/IotaCSharpApi/Api/Core/GetNeighborsResponse.cs b/IotaCSharpApi/Api/Core/GetNeighborsResponse.cs index 08448d4..a49c087 100644 --- a/IotaCSharpApi/Api/Core/GetNeighborsResponse.cs +++ b/IotaCSharpApi/Api/Core/GetNeighborsResponse.cs @@ -1,12 +1,12 @@ -using System.Collections.Generic; -using Iota.Lib.CSharp.Api.Model; - -namespace Iota.Lib.CSharp.Api.Core -{ - /// - /// Response of - /// - public class GetNeighborsResponse +using System.Collections.Generic; +using Iota.Lib.CSharp.Api.Model; + +namespace Iota.Lib.CSharp.Api.Core +{ + /// + /// Response of + /// + public class GetNeighborsResponse : IotaResponseBase { /// /// Gets or sets the neighbors. @@ -14,6 +14,6 @@ public class GetNeighborsResponse /// /// The neighbors. /// - public List Neighbors { get; set; } - } + public List Neighbors { get; set; } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/GetNodeInfoRequest.cs b/IotaCSharpApi/Api/Core/GetNodeInfoRequest.cs index 5445c81..5f88b5d 100644 --- a/IotaCSharpApi/Api/Core/GetNodeInfoRequest.cs +++ b/IotaCSharpApi/Api/Core/GetNodeInfoRequest.cs @@ -3,7 +3,7 @@ /// /// Returns information about your node /// - public class GetNodeInfoRequest : IotaRequest + public class GetNodeInfoRequest : IotaRequestBase { /// /// Initializes a new instance of the class. diff --git a/IotaCSharpApi/Api/Core/GetNodeInfoResponse.cs b/IotaCSharpApi/Api/Core/GetNodeInfoResponse.cs index cad5fd8..a48d98f 100644 --- a/IotaCSharpApi/Api/Core/GetNodeInfoResponse.cs +++ b/IotaCSharpApi/Api/Core/GetNodeInfoResponse.cs @@ -3,8 +3,8 @@ /// /// This class represents the response of /// - /// - public class GetNodeInfoResponse : IotaResponse + /// + public class GetNodeInfoResponse : IotaResponseBase { /// /// Name of the IOTA software you're currently using (IRI stands for Initial Reference Implementation). diff --git a/IotaCSharpApi/Api/Core/GetTipsRequest.cs b/IotaCSharpApi/Api/Core/GetTipsRequest.cs index a08d6ee..65de727 100644 --- a/IotaCSharpApi/Api/Core/GetTipsRequest.cs +++ b/IotaCSharpApi/Api/Core/GetTipsRequest.cs @@ -1,15 +1,15 @@ -namespace Iota.Lib.CSharp.Api.Core -{ - /// - /// This class represents the core API request 'GetTips' - /// - public class GetTipsRequest : IotaRequest +namespace Iota.Lib.CSharp.Api.Core +{ + /// + /// This class represents the core API request 'GetTips' + /// + public class GetTipsRequest : IotaRequestBase { /// /// Initializes a new instance of the class. /// - public GetTipsRequest() : base(Core.Command.GetTips.GetCommandString()) - { - } - } + public GetTipsRequest() : base(Core.Command.GetTips.GetCommandString()) + { + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/GetTipsResponse.cs b/IotaCSharpApi/Api/Core/GetTipsResponse.cs index 094a7eb..ddcc1c6 100644 --- a/IotaCSharpApi/Api/Core/GetTipsResponse.cs +++ b/IotaCSharpApi/Api/Core/GetTipsResponse.cs @@ -1,18 +1,18 @@ -using System.Collections.Generic; - -namespace Iota.Lib.CSharp.Api.Core -{ +using System.Collections.Generic; + +namespace Iota.Lib.CSharp.Api.Core +{ /// - /// This class represents the response of - /// - public class GetTipsResponse : IotaResponse + /// This class represents the response of + /// + public class GetTipsResponse : IotaResponseBase { - /// - /// Gets or sets the hashes. - /// - /// - /// The hashes. - /// + /// + /// Gets or sets the hashes. + /// + /// + /// The hashes. + /// public List Hashes { get; set; } /// @@ -21,9 +21,9 @@ public class GetTipsResponse : IotaResponse /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(Hashes)}: {string.Join(",", Hashes)}"; - } - } + public override string ToString() + { + return $"{nameof(Hashes)}: {string.Join(",", Hashes)}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/GetTransactionsToApproveRequest.cs b/IotaCSharpApi/Api/Core/GetTransactionsToApproveRequest.cs index 15dc874..dcae4bb 100644 --- a/IotaCSharpApi/Api/Core/GetTransactionsToApproveRequest.cs +++ b/IotaCSharpApi/Api/Core/GetTransactionsToApproveRequest.cs @@ -1,18 +1,18 @@ -namespace Iota.Lib.CSharp.Api.Core -{ - /// - /// This class represents the core API call 'GetTransactionsToApprove' - /// - public class GetTransactionsToApproveRequest : IotaRequest +namespace Iota.Lib.CSharp.Api.Core +{ + /// + /// This class represents the core API call 'GetTransactionsToApprove' + /// + public class GetTransactionsToApproveRequest : IotaRequestBase { - /// - /// Initializes a new instance of the class. - /// - /// The depth. - public GetTransactionsToApproveRequest(int depth) - : base(Core.Command.GetTransactionsToApprove.GetCommandString()) - { - Depth = depth; + /// + /// Initializes a new instance of the class. + /// + /// The depth. + public GetTransactionsToApproveRequest(int depth) + : base(Core.Command.GetTransactionsToApprove.GetCommandString()) + { + Depth = depth; } /// @@ -29,9 +29,9 @@ public GetTransactionsToApproveRequest(int depth) /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(Depth)}: {Depth}"; - } - } + public override string ToString() + { + return $"{nameof(Depth)}: {Depth}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/GetTransactionsToApproveResponse.cs b/IotaCSharpApi/Api/Core/GetTransactionsToApproveResponse.cs index 5bdca42..67222a2 100644 --- a/IotaCSharpApi/Api/Core/GetTransactionsToApproveResponse.cs +++ b/IotaCSharpApi/Api/Core/GetTransactionsToApproveResponse.cs @@ -1,24 +1,24 @@ -namespace Iota.Lib.CSharp.Api.Core -{ - /// - /// This class represents the response of - /// - public class GetTransactionsToApproveResponse : IotaResponse - { - /// - /// Gets or sets the trunk transaction. - /// - /// - /// The trunk transaction. - /// - public string TrunkTransaction { get; set; } - - /// - /// Gets or sets the branch transaction. - /// - /// - /// The branch transaction. - /// +namespace Iota.Lib.CSharp.Api.Core +{ + /// + /// This class represents the response of + /// + public class GetTransactionsToApproveResponse : IotaResponseBase + { + /// + /// Gets or sets the trunk transaction. + /// + /// + /// The trunk transaction. + /// + public string TrunkTransaction { get; set; } + + /// + /// Gets or sets the branch transaction. + /// + /// + /// The branch transaction. + /// public string BranchTransaction { get; set; } /// @@ -27,9 +27,9 @@ public class GetTransactionsToApproveResponse : IotaResponse /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(TrunkTransaction)}: {TrunkTransaction}, {nameof(BranchTransaction)}: {BranchTransaction}"; - } - } + public override string ToString() + { + return $"{nameof(TrunkTransaction)}: {TrunkTransaction}, {nameof(BranchTransaction)}: {BranchTransaction}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/GetTrytesRequest.cs b/IotaCSharpApi/Api/Core/GetTrytesRequest.cs index 31c13f0..ba0d081 100644 --- a/IotaCSharpApi/Api/Core/GetTrytesRequest.cs +++ b/IotaCSharpApi/Api/Core/GetTrytesRequest.cs @@ -1,16 +1,16 @@ -namespace Iota.Lib.CSharp.Api.Core -{ +namespace Iota.Lib.CSharp.Api.Core +{ /// - /// This class represents the core API request 'GetTrytes' - /// - public class GetTrytesRequest : IotaRequest + /// This class represents the core API request 'GetTrytes' + /// + public class GetTrytesRequest : IotaRequestBase { /// /// Initializes a new instance of the class. /// - public GetTrytesRequest() : base(Core.Command.GetTrytes.GetCommandString()) - { - + public GetTrytesRequest() : base(Core.Command.GetTrytes.GetCommandString()) + { + } /// @@ -27,9 +27,9 @@ public GetTrytesRequest() : base(Core.Command.GetTrytes.GetCommandString()) /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(Hashes)}: {string.Join(",", Hashes)}"; - } - } + public override string ToString() + { + return $"{nameof(Hashes)}: {string.Join(",", Hashes)}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/GetTrytesResponse.cs b/IotaCSharpApi/Api/Core/GetTrytesResponse.cs index 541f03b..bd7fb68 100644 --- a/IotaCSharpApi/Api/Core/GetTrytesResponse.cs +++ b/IotaCSharpApi/Api/Core/GetTrytesResponse.cs @@ -1,19 +1,19 @@ -using System.Collections.Generic; - -namespace Iota.Lib.CSharp.Api.Core -{ +using System.Collections.Generic; + +namespace Iota.Lib.CSharp.Api.Core +{ /// - /// This class represents the response of - /// - public class GetTrytesResponse + /// This class represents the response of + /// + public class GetTrytesResponse : IotaResponseBase { - /// - /// Gets or sets the trytes. - /// - /// - /// The trytes. - /// + /// + /// Gets or sets the trytes. + /// + /// + /// The trytes. + /// public List Trytes { get; set; } /// @@ -22,9 +22,9 @@ public class GetTrytesResponse /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(Trytes)}: {string.Join(",", Trytes)}"; - } - } + public override string ToString() + { + return $"{nameof(Trytes)}: {string.Join(",", Trytes)}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/InterruptAttachingToTangleRequest.cs b/IotaCSharpApi/Api/Core/InterruptAttachingToTangleRequest.cs index cd204fc..cf90586 100644 --- a/IotaCSharpApi/Api/Core/InterruptAttachingToTangleRequest.cs +++ b/IotaCSharpApi/Api/Core/InterruptAttachingToTangleRequest.cs @@ -1,15 +1,15 @@ -namespace Iota.Lib.CSharp.Api.Core -{ +namespace Iota.Lib.CSharp.Api.Core +{ /// - /// This class represents the core api request 'InterruptAttachingToTangle' - /// - public class InterruptAttachingToTangleRequest : IotaRequest + /// This class represents the core api request 'InterruptAttachingToTangle' + /// + public class InterruptAttachingToTangleRequest : IotaRequestBase { /// /// Initializes a new instance of the class. /// - public InterruptAttachingToTangleRequest() : base(Core.Command.InterruptAttachingToTangle.GetCommandString()) - { - } - } + public InterruptAttachingToTangleRequest() : base(Core.Command.InterruptAttachingToTangle.GetCommandString()) + { + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/InterruptAttachingToTangleResponse.cs b/IotaCSharpApi/Api/Core/InterruptAttachingToTangleResponse.cs index ff466db..ad9d5f2 100644 --- a/IotaCSharpApi/Api/Core/InterruptAttachingToTangleResponse.cs +++ b/IotaCSharpApi/Api/Core/InterruptAttachingToTangleResponse.cs @@ -1,11 +1,11 @@ -namespace Iota.Lib.CSharp.Api.Core +namespace Iota.Lib.CSharp.Api.Core { /// /// This class represents the response of /// - /// - public class InterruptAttachingToTangleResponse : IotaResponse - { - - } + /// + public class InterruptAttachingToTangleResponse : IotaResponseBase + { + + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/IotaRequestBase.cs b/IotaCSharpApi/Api/Core/IotaRequestBase.cs new file mode 100644 index 0000000..8f0c57a --- /dev/null +++ b/IotaCSharpApi/Api/Core/IotaRequestBase.cs @@ -0,0 +1,25 @@ +namespace Iota.Lib.CSharp.Api.Core +{ + /// + /// This class serves as base class for the different core API calls/requests + /// + public abstract class IotaRequestBase + { + /// + /// Initializes a new instance of the class. + /// + /// The command. + public IotaRequestBase(string command) + { + this.Command = command; + } + + /// + /// Gets or sets the command. + /// + /// + /// The command. + /// + public string Command { get; set; } + } +} \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/IotaResponseBase.cs b/IotaCSharpApi/Api/Core/IotaResponseBase.cs new file mode 100644 index 0000000..6f24c52 --- /dev/null +++ b/IotaCSharpApi/Api/Core/IotaResponseBase.cs @@ -0,0 +1,16 @@ +namespace Iota.Lib.CSharp.Api.Core +{ + /// + /// This class represents the base class of different core API response classes + /// + public abstract class IotaResponseBase + { + /// + /// Gets or sets the duration. + /// + /// + /// The duration. + /// + public long Duration { get; set; } + } +} \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/RemoveNeighborsRequest.cs b/IotaCSharpApi/Api/Core/RemoveNeighborsRequest.cs index b448a9c..e9ec239 100644 --- a/IotaCSharpApi/Api/Core/RemoveNeighborsRequest.cs +++ b/IotaCSharpApi/Api/Core/RemoveNeighborsRequest.cs @@ -5,8 +5,8 @@ namespace Iota.Lib.CSharp.Api.Core /// /// This class represents the core api request 'RemoveNeighbors' /// - /// - public class RemoveNeighborsRequest : IotaRequest + /// + public class RemoveNeighborsRequest : IotaRequestBase { /// /// Initializes a new instance of the class. diff --git a/IotaCSharpApi/Api/Core/RemoveNeighborsResponse.cs b/IotaCSharpApi/Api/Core/RemoveNeighborsResponse.cs index 2dded81..c7686c4 100644 --- a/IotaCSharpApi/Api/Core/RemoveNeighborsResponse.cs +++ b/IotaCSharpApi/Api/Core/RemoveNeighborsResponse.cs @@ -1,16 +1,16 @@ -namespace Iota.Lib.CSharp.Api.Core +namespace Iota.Lib.CSharp.Api.Core { /// /// This class represents the response of /// - public class RemoveNeighborsResponse + public class RemoveNeighborsResponse : IotaResponseBase { - /// - /// Gets or sets the number of removed neighbors. - /// - /// - /// The removed neighbors. - /// + /// + /// Gets or sets the number of removed neighbors. + /// + /// + /// The removed neighbors. + /// public long RemovedNeighbors { get; set; } /// @@ -19,9 +19,9 @@ public class RemoveNeighborsResponse /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(RemovedNeighbors)}: {RemovedNeighbors}"; - } - } + public override string ToString() + { + return $"{nameof(RemovedNeighbors)}: {RemovedNeighbors}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/StoreTransactionsRequest.cs b/IotaCSharpApi/Api/Core/StoreTransactionsRequest.cs index b015009..47a5b06 100644 --- a/IotaCSharpApi/Api/Core/StoreTransactionsRequest.cs +++ b/IotaCSharpApi/Api/Core/StoreTransactionsRequest.cs @@ -1,28 +1,28 @@ -using System.Collections.Generic; - -namespace Iota.Lib.CSharp.Api.Core -{ - /// +using System.Collections.Generic; + +namespace Iota.Lib.CSharp.Api.Core +{ + /// /// This class represents the core API request 'StoreTransactions'. - /// It stores transactions into the local storage. The trytes to be used for this call are returned by attachToTangle. - /// - public class StoreTransactionsRequest : IotaRequest + /// It stores transactions into the local storage. The trytes to be used for this call are returned by attachToTangle. + /// + public class StoreTransactionsRequest : IotaRequestBase { /// /// Initializes a new instance of the class. /// /// The trytes. - public StoreTransactionsRequest(List trytes) : base(Core.Command.StoreTransactions.GetCommandString()) - { - this.Trytes = trytes; + public StoreTransactionsRequest(List trytes) : base(Core.Command.StoreTransactions.GetCommandString()) + { + this.Trytes = trytes; } - /// - /// Gets or sets the trytes. - /// - /// - /// The trytes. - /// + /// + /// Gets or sets the trytes. + /// + /// + /// The trytes. + /// public List Trytes { get; set; } /// @@ -31,9 +31,9 @@ public StoreTransactionsRequest(List trytes) : base(Core.Command.StoreTr /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(Trytes)}: {Trytes}"; - } - } + public override string ToString() + { + return $"{nameof(Trytes)}: {Trytes}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Core/StoreTransactionsResponse.cs b/IotaCSharpApi/Api/Core/StoreTransactionsResponse.cs index 6a52d20..be20c62 100644 --- a/IotaCSharpApi/Api/Core/StoreTransactionsResponse.cs +++ b/IotaCSharpApi/Api/Core/StoreTransactionsResponse.cs @@ -1,9 +1,9 @@ -namespace Iota.Lib.CSharp.Api.Core +namespace Iota.Lib.CSharp.Api.Core { /// /// This class represents the response of /// - public class StoreTransactionsResponse - { - } + public class StoreTransactionsResponse : IotaResponseBase + { + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Exception/IllegalAccessError.cs b/IotaCSharpApi/Api/Exception/IllegalAccessError.cs index 03825d0..14565a6 100644 --- a/IotaCSharpApi/Api/Exception/IllegalAccessError.cs +++ b/IotaCSharpApi/Api/Exception/IllegalAccessError.cs @@ -6,6 +6,5 @@ /// public class IllegalAccessError : System.Exception { - } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Exception/IllegalStateException.cs b/IotaCSharpApi/Api/Exception/IllegalStateException.cs index 4a547c1..8625415 100644 --- a/IotaCSharpApi/Api/Exception/IllegalStateException.cs +++ b/IotaCSharpApi/Api/Exception/IllegalStateException.cs @@ -1,6 +1,4 @@ -using System; - -namespace Iota.Lib.CSharp.Api.Exception +namespace Iota.Lib.CSharp.Api.Exception { /// /// This exception occurs when an illegal state is encountered diff --git a/IotaCSharpApi/Api/Exception/InvalidTryteException.cs b/IotaCSharpApi/Api/Exception/InvalidTryteException.cs index 79a85ea..30d6fac 100644 --- a/IotaCSharpApi/Api/Exception/InvalidTryteException.cs +++ b/IotaCSharpApi/Api/Exception/InvalidTryteException.cs @@ -5,6 +5,5 @@ /// public class InvalidTryteException : System.Exception { - } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/IotaApi.cs b/IotaCSharpApi/Api/IotaApi.cs index 7029097..44440a9 100644 --- a/IotaCSharpApi/Api/IotaApi.cs +++ b/IotaCSharpApi/Api/IotaApi.cs @@ -33,9 +33,7 @@ public class IotaApi : IotaCoreApi /// a custom curl implementation to be used to perform the pow. Use the other constructor in order to use the default curl implementation provided by the library public IotaApi(string host, int port, ICurl curl) : base(host, port) { - if(curl == null) - throw new ArgumentNullException(nameof(curl)); - this.curl = curl; + this.curl = curl ?? throw new ArgumentNullException(nameof(curl)); } /// @@ -56,7 +54,7 @@ public Inputs GetInputs(string seed, int start, int end, long threshold = 100) // If start value bigger than end, return error if (start > end) - throw new ArgumentException("start must be smaller than end", "start"); + throw new ArgumentException("start must be smaller than end", nameof(start)); // or if difference between end and start is bigger than 500 keys if (end - start > 500) @@ -162,17 +160,17 @@ public List PrepareTransfers(string seed, Transfer[] transfers, List 2187) + if (t.Message.Length > 2187) { // Get total length, message / maxLength (2187 trytes) - signatureMessageLength += (int) Math.Floor(((double) transfers[i].Message.Length/2187)); + signatureMessageLength += (int) Math.Floor(((double) t.Message.Length/2187)); - var msgCopy = transfers[i].Message; + var msgCopy = t.Message; // While there is still a message, copy it while (msgCopy != null) @@ -194,10 +192,10 @@ public List PrepareTransfers(string seed, Transfer[] transfers, List PrepareTransfers(string seed, Transfer[] transfers, List PrepareTransfers(string seed, Transfer[] transfers, List PrepareTransfers(string seed, Transfer[] transfers, List AddRemainder(string seed, List inputs, Bundle bundle, string tag, long totalValue, string remainderAddress, List signatureFragments) { @@ -356,7 +353,6 @@ private List AddRemainder(string seed, List inputs, Bundle bundle throw new NotEnoughBalanceException(totalValue); } - /// /// Generates a new address from a seed and returns the remainderAddress. This is either done deterministically, or by providing the index of the new remainderAddress /// @@ -446,11 +442,9 @@ public Bundle[] GetTransfers(string seed, int? start, int? end, bool inclusionSt // If a transaction is non tail, get the tail transactions associated with it // add it to the list of tail transactions - string[] addresses = GetNewAddress(seed, start.Value, false, - end.HasValue ? end.Value : end.Value - start.Value, true); - - + string[] addresses = GetNewAddress(seed, start.Value, false, end.Value, true); Bundle[] bundles = BundlesFromAddresses(addresses, inclusionStates); + return bundles; } @@ -496,6 +490,7 @@ private Bundle[] BundlesFromAddresses(string[] addresses, bool inclusionStates) // If inclusionStates, get the confirmation status // of the tail transactions, and thus the bundles GetInclusionStatesResponse gisr = null; + if (inclusionStates) { try @@ -506,14 +501,14 @@ private Bundle[] BundlesFromAddresses(string[] addresses, bool inclusionStates) { // suppress exception (the check is done below) } - if (gisr == null || gisr.States == null || gisr.States.Count == 0) + + if (gisr?.States == null || gisr.States.Count == 0) throw new ArgumentException("Inclusion states not found"); } - - + GetInclusionStatesResponse finalInclusionStates = gisr; - Parallel.ForEach(tailTransactions, (param) => + Parallel.ForEach(tailTransactions, param => { try { @@ -521,12 +516,14 @@ private Bundle[] BundlesFromAddresses(string[] addresses, bool inclusionStates) if (inclusionStates) { - bool thisInclusion = finalInclusionStates.States[tailTxArray.ToList().IndexOf(param)]; + bool thisInclusion = finalInclusionStates != null && finalInclusionStates.States[tailTxArray.ToList().IndexOf(param)]; + foreach (Transaction t in b.Transactions) { t.Persistance = thisInclusion; } } + finalBundles.Add(b); } catch (System.Exception ex) @@ -537,10 +534,12 @@ private Bundle[] BundlesFromAddresses(string[] addresses, bool inclusionStates) finalBundles.Sort(); Bundle[] returnValue = new Bundle[finalBundles.Count]; + for (int i = 0; i < finalBundles.Count; i++) { returnValue[i] = new Bundle(finalBundles[i].Transactions, finalBundles[i].Transactions.Count); } + return returnValue; } @@ -552,7 +551,7 @@ private Bundle[] BundlesFromAddresses(string[] addresses, bool inclusionStates) public List FindTransactionObjects(string[] adresses) { FindTransactionsResponse ftr = FindTransactions(adresses.ToList(), null, null, null); - if (ftr == null || ftr.Hashes == null) + if (ftr?.Hashes == null) return null; // get the transaction objects of the transactions @@ -579,6 +578,7 @@ public List GetTransactionsObjects(string[] hashes) { trxs.Add(new Transaction(tryte, curl)); } + return trxs; } @@ -597,7 +597,6 @@ public List FindTransactionObjectsByBundle(string[] bundles) return GetTransactionsObjects(ftr.Hashes.ToArray()); } - /// /// Replays the bundle. /// @@ -607,8 +606,6 @@ public List FindTransactionObjectsByBundle(string[] bundles) /// an array of boolean that indicate which transactions have been replayed successfully public bool[] ReplayBundle(string transaction, int depth, int minWeightMagnitude) { - //StopWatch stopWatch = new StopWatch(); - List bundleTrytes = new List(); Bundle bundle = GetBundle(transaction); @@ -648,7 +645,6 @@ public FindTransactionsResponse FindTransactionsByApprovees(params string[] appr return FindTransactions(null, null, approvees.ToList(), null); } - /// /// Finds the transactions by digests. /// @@ -680,7 +676,6 @@ public GetInclusionStatesResponse GetLatestInclusion(string[] hashes) return GetInclusionStates(hashes, latestMilestone); } - /// /// Wrapper function that basically does prepareTransfers, as well as attachToTangle and finally, it broadcasts and stores the transactions locally. /// @@ -702,7 +697,6 @@ public bool[] SendTransfer(string seed, int depth, int minWeightMagnitude, Trans for (int i = 0; i < trxs.Length; i++) { FindTransactionsResponse response = FindTransactionsByBundles(trxs[i].Bundle); - successful[i] = response.Hashes.Count != 0; } @@ -738,6 +732,7 @@ public Transaction[] SendTrytes(string[] trytes, int depth, int minWeightMagnitu { trx.Add(new Transaction(tx, curl)); } + return trx.ToArray(); } @@ -833,7 +828,6 @@ public Bundle GetBundle(string transaction) return bundle; } - private Bundle TraverseBundle(string trunkTransaction, string bundleHash, Bundle bundle) { GetTrytesResponse gtr = GetTrytes(trunkTransaction); diff --git a/IotaCSharpApi/Api/Model/Bundle.cs b/IotaCSharpApi/Api/Model/Bundle.cs index 6ac683c..ccd14d5 100644 --- a/IotaCSharpApi/Api/Model/Bundle.cs +++ b/IotaCSharpApi/Api/Model/Bundle.cs @@ -35,10 +35,7 @@ public Bundle(List transactions, int length) /// /// The index. /// - public Transaction this[int index] - { - get { return Transactions[index]; } - } + public Transaction this[int index] => Transactions[index]; /// /// Gets or sets the transactions. @@ -195,9 +192,9 @@ public void FinalizeBundle(ICurl customCurl) customCurl.Squeeze(hash, 0, hash.Length); string hashInTrytes = Converter.ToTrytes(hash); - for (int i = 0; i < Transactions.Count; i++) + foreach (Transaction t in Transactions) { - Transactions[i].Bundle = hashInTrytes; + t.Bundle = hashInTrytes; } } diff --git a/IotaCSharpApi/Api/Model/Input.cs b/IotaCSharpApi/Api/Model/Input.cs index 4c1c71e..94a9462 100644 --- a/IotaCSharpApi/Api/Model/Input.cs +++ b/IotaCSharpApi/Api/Model/Input.cs @@ -29,7 +29,6 @@ public class Input /// public int KeyIndex { get; set; } - /// /// Returns a that represents this instance. /// diff --git a/IotaCSharpApi/Api/Model/Neighbor.cs b/IotaCSharpApi/Api/Model/Neighbor.cs index 6fefe2f..c62dd6d 100644 --- a/IotaCSharpApi/Api/Model/Neighbor.cs +++ b/IotaCSharpApi/Api/Model/Neighbor.cs @@ -1,9 +1,9 @@ -namespace Iota.Lib.CSharp.Api.Model +namespace Iota.Lib.CSharp.Api.Model { /// /// This class represents a neigbhor /// - public class Neighbor + public class Neighbor { /// /// Gets or sets the address. @@ -11,8 +11,8 @@ public class Neighbor /// /// The address. /// - public string Address { get; set; } - + public string Address { get; set; } + /// /// Gets or sets the number of all transactions. /// @@ -29,12 +29,12 @@ public class Neighbor /// public long NumberOfInvalidTransactions { get; set; } - /// - /// Gets or sets the number of new transactions. - /// - /// - /// The number of new transactions. - /// + /// + /// Gets or sets the number of new transactions. + /// + /// + /// The number of new transactions. + /// public long NumberOfNewTransactions { get; set; } /// @@ -43,9 +43,9 @@ public class Neighbor /// /// A that represents this instance. /// - public override string ToString() - { - return $"{nameof(Address)}: {Address}, {nameof(NumberOfAllTransactions)}: {NumberOfAllTransactions}, {nameof(NumberOfInvalidTransactions)}: {NumberOfInvalidTransactions}, {nameof(NumberOfNewTransactions)}: {NumberOfNewTransactions}"; - } - } + public override string ToString() + { + return $"{nameof(Address)}: {Address}, {nameof(NumberOfAllTransactions)}: {NumberOfAllTransactions}, {nameof(NumberOfInvalidTransactions)}: {NumberOfInvalidTransactions}, {nameof(NumberOfNewTransactions)}: {NumberOfNewTransactions}"; + } + } } \ No newline at end of file diff --git a/IotaCSharpApi/Api/Utils/Checksum.cs b/IotaCSharpApi/Api/Utils/Checksum.cs index 6f74ae9..12a92a7 100644 --- a/IotaCSharpApi/Api/Utils/Checksum.cs +++ b/IotaCSharpApi/Api/Utils/Checksum.cs @@ -1,6 +1,5 @@ using Iota.Lib.CSharp.Api.Exception; - namespace Iota.Lib.CSharp.Api.Utils { /// @@ -21,8 +20,7 @@ public static string AddChecksum(string address) addressWithChecksum += CalculateChecksum(address); return addressWithChecksum; } - - + /// /// Removes the checksum from the specified address with checksum /// @@ -37,8 +35,7 @@ public static string RemoveChecksum(this string addressWithChecksum) } throw new InvalidAddressException(addressWithChecksum); } - - + internal static string GetAddress(string addressWithChecksum) { return addressWithChecksum.Substring(0, Constants.AddressLengthWithoutChecksum); @@ -58,7 +55,6 @@ public static bool IsValidChecksum(this string addressWithChecksum) return adressWithRecalculateChecksum.Equals(addressWithChecksum); } - private static bool IsAddressWithChecksum(string addressWithChecksum) { return InputValidator.IsAddress(addressWithChecksum) && addressWithChecksum.Length == Constants.AddressLengthWithChecksum; diff --git a/IotaCSharpApi/Api/Utils/Converter.cs b/IotaCSharpApi/Api/Utils/Converter.cs index aab518f..510ee3b 100644 --- a/IotaCSharpApi/Api/Utils/Converter.cs +++ b/IotaCSharpApi/Api/Utils/Converter.cs @@ -67,6 +67,7 @@ static Converter() public static byte[] ToBytes(int[] trits, int offset, int size) { byte[] bytes = new byte[(size + NumberOfTritsInAByte - 1)/NumberOfTritsInAByte]; + for (int i = 0; i < bytes.Length; i++) { int value = 0; @@ -102,6 +103,7 @@ public static byte[] ToBytes(int[] trits) public static void GetTrits(sbyte[] bytes, int[] trits) { int offset = 0; + for (int i = 0; i < bytes.Length && offset < trits.Length; i++) { Array.Copy( @@ -113,6 +115,7 @@ public static void GetTrits(sbyte[] bytes, int[] trits) offset += NumberOfTritsInAByte; } + while (offset < trits.Length) { trits[offset++] = 0; @@ -127,11 +130,13 @@ public static void GetTrits(sbyte[] bytes, int[] trits) public static int[] ToTritsString(string trytes) { int[] d = new int[3*trytes.Length]; + for (int i = 0; i < trytes.Length; i++) { Array.Copy(TryteToTritsMappings[Constants.TryteAlphabet.IndexOf(trytes[i])], 0, d, i*NumberOfTritsInATryte, NumberOfTritsInATryte); } + return d; } diff --git a/IotaCSharpApi/Api/Utils/InputValidator.cs b/IotaCSharpApi/Api/Utils/InputValidator.cs index 835a466..e96751b 100644 --- a/IotaCSharpApi/Api/Utils/InputValidator.cs +++ b/IotaCSharpApi/Api/Utils/InputValidator.cs @@ -26,6 +26,7 @@ public static bool IsAddress(string address) { return IsTrytes(address, address.Length); } + return false; } @@ -82,6 +83,7 @@ public static bool IsArrayOfHashes(string[] hashes) } } } + return true; } @@ -129,6 +131,7 @@ public static bool IsTransfersCollectionValid(ICollection transfers) return false; } } + return true; } @@ -198,7 +201,9 @@ public static void CheckIfValidSeed(string seed) /// public static string PadSeedIfNecessary(string seed) { - while (seed.Length < Constants.AddressLengthWithoutChecksum) seed += 9; + while (seed.Length < Constants.AddressLengthWithoutChecksum) + seed += 9; + return seed; } diff --git a/IotaCSharpApi/Api/Utils/IotaApiUtils.cs b/IotaCSharpApi/Api/Utils/IotaApiUtils.cs index 5df8d56..48e624d 100644 --- a/IotaCSharpApi/Api/Utils/IotaApiUtils.cs +++ b/IotaCSharpApi/Api/Utils/IotaApiUtils.cs @@ -24,32 +24,24 @@ internal static string NewAddress(string seed, int index, bool checksum, ICurl c TimeSpan ts = stopWatch.Elapsed; // Format and display the TimeSpan value. - string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", - ts.Hours, ts.Minutes, ts.Seconds, - ts.Milliseconds/10); + string elapsedTime = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds / 10:00}"; Console.WriteLine(elapsedTime); int[] key = signing.Key(Converter.ToTrits(seed), index, 2); ts = stopWatch.Elapsed; - elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", - ts.Hours, ts.Minutes, ts.Seconds, - ts.Milliseconds/10); + elapsedTime = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds / 10:00}"; Console.WriteLine(elapsedTime); int[] digests = signing.Digests(key); ts = stopWatch.Elapsed; - elapsedTime = String.Format("After Digest {0:00}:{1:00}:{2:00}.{3:00}", - ts.Hours, ts.Minutes, ts.Seconds, - ts.Milliseconds/10); + elapsedTime = $"After Digest {ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds / 10:00}"; Console.WriteLine(elapsedTime); int[] addressTrits = signing.Address(digests); ts = stopWatch.Elapsed; - elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", - ts.Hours, ts.Minutes, ts.Seconds, - ts.Milliseconds/10); + elapsedTime = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds / 10:00}"; Console.WriteLine(elapsedTime); string address = Converter.ToTrytes(addressTrits); @@ -72,11 +64,11 @@ internal static List SignInputsAndReturn(string seed, // Here we do the actual signing of the inputs // Iterate over all bundle transactions, find the inputs // Get the corresponding private key and calculate the signatureFragment - for (int i = 0; i < bundle.Transactions.Count; i++) + foreach (Transaction t in bundle.Transactions) { - if (Int64.Parse(bundle.Transactions[i].Value) < 0) + if (Int64.Parse(t.Value) < 0) { - string thisAddress = bundle.Transactions[i].Address; + string thisAddress = t.Address; // Get the corresponding keyIndex of the address int keyIndex = 0; @@ -89,7 +81,7 @@ internal static List SignInputsAndReturn(string seed, } } - string bundleHash = bundle.Transactions[i].Bundle; + string bundleHash = t.Bundle; // Get corresponding private key of address int[] key = new Signing(curl).Key(Converter.ToTrits(seed), keyIndex, 2); @@ -107,15 +99,15 @@ internal static List SignInputsAndReturn(string seed, int[] firstSignedFragment = new Signing(curl).SignatureFragment(firstBundleFragment, firstFragment); // Convert signature to trytes and assign the new signatureFragment - bundle.Transactions[i].SignatureFragment = Converter.ToTrytes(firstSignedFragment); + t.SignatureFragment = Converter.ToTrytes(firstSignedFragment); // Because the signature is > 2187 trytes, we need to // find the second transaction to add the remainder of the signature - for (int j = 0; j < bundle.Transactions.Count; j++) + foreach (Transaction t1 in bundle.Transactions) { // Same address as well as value = 0 (as we already spent the input) - if (bundle.Transactions[j].Address.Equals(thisAddress) && - Int64.Parse(bundle.Transactions[j].Value) == 0) + if (t1.Address.Equals(thisAddress) && + Int64.Parse(t1.Value) == 0) { // Use the second 6562 trits int[] secondFragment = ArrayUtils.SubArray2(key, 6561, 6561); @@ -128,7 +120,7 @@ internal static List SignInputsAndReturn(string seed, secondFragment); // Convert signature to trytes and assign it again to this bundle entry - bundle.Transactions[j].SignatureFragment = (Converter.ToTrytes(secondSignedFragment)); + t1.SignatureFragment = (Converter.ToTrytes(secondSignedFragment)); } } } diff --git a/IotaCSharpApi/Api/Utils/IotaUnitConverter.cs b/IotaCSharpApi/Api/Utils/IotaUnitConverter.cs index 306a21a..eac1c86 100644 --- a/IotaCSharpApi/Api/Utils/IotaUnitConverter.cs +++ b/IotaCSharpApi/Api/Utils/IotaUnitConverter.cs @@ -67,6 +67,7 @@ public static IotaUnits FindOptimalIotaUnitToDisplay(long amount) { units = IotaUnits.Peta; } + return units; } } diff --git a/IotaCSharpApi/Api/Utils/TrytesConverter.cs b/IotaCSharpApi/Api/Utils/TrytesConverter.cs index 96d39e0..a41063b 100644 --- a/IotaCSharpApi/Api/Utils/TrytesConverter.cs +++ b/IotaCSharpApi/Api/Utils/TrytesConverter.cs @@ -3,7 +3,6 @@ namespace Iota.Lib.CSharp.Api.Utils { - /// /// This class allows to convert between ASCII and tryte encoded strings /// @@ -40,8 +39,6 @@ public static string ToTrytes(string inputString) return trytes.ToString(); } - - /// /// Converts the specified tryte encoded String to ASCII /// diff --git a/IotaCSharpApi/App.config b/IotaCSharpApi/App.config index 9dfd41a..b99ad6a 100644 --- a/IotaCSharpApi/App.config +++ b/IotaCSharpApi/App.config @@ -2,5 +2,5 @@ - + diff --git a/IotaCSharpApi/IotaCSharpApi.csproj b/IotaCSharpApi/IotaCSharpApi.csproj index fb3f6a3..ddd8942 100644 --- a/IotaCSharpApi/IotaCSharpApi.csproj +++ b/IotaCSharpApi/IotaCSharpApi.csproj @@ -1,6 +1,6 @@  - + Debug @@ -10,7 +10,7 @@ Properties Iota.Lib.CSharp IotaApi - v4.0 + v4.7 512 @@ -43,13 +43,11 @@ - - ..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll - True + + ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll - ..\packages\RestSharp.105.2.3\lib\net4\RestSharp.dll - True + ..\packages\RestSharp.105.2.3\lib\net46\RestSharp.dll @@ -110,8 +108,8 @@ - - + + @@ -143,10 +141,10 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + - +