diff --git a/src/NATS.Client.Core/INatsSerializer.cs b/src/NATS.Client.Core/INatsSerializer.cs index 51254c611..4b78f71de 100644 --- a/src/NATS.Client.Core/INatsSerializer.cs +++ b/src/NATS.Client.Core/INatsSerializer.cs @@ -18,9 +18,9 @@ public interface ICountableBufferWriter : IBufferWriter int WrittenCount { get; } } -public sealed class JsonNatsSerializer : INatsSerializer +public sealed class NatsJsonSerializer : INatsSerializer { - private static readonly JsonWriterOptions JsonWriterOptions = new JsonWriterOptions + private static readonly JsonWriterOptions JsonWriterOpts = new JsonWriterOptions { Indented = false, SkipValidation = true, @@ -29,11 +29,11 @@ public sealed class JsonNatsSerializer : INatsSerializer [ThreadStatic] private static Utf8JsonWriter? _jsonWriter; - private readonly JsonSerializerOptions _options; + private readonly JsonSerializerOptions _opts; - public JsonNatsSerializer(JsonSerializerOptions options) => _options = options; + public NatsJsonSerializer(JsonSerializerOptions opts) => _opts = opts; - public static JsonNatsSerializer Default { get; } = + public static NatsJsonSerializer Default { get; } = new(new JsonSerializerOptions { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, @@ -44,7 +44,7 @@ public int Serialize(ICountableBufferWriter bufferWriter, T? value) Utf8JsonWriter writer; if (_jsonWriter == null) { - writer = _jsonWriter = new Utf8JsonWriter(bufferWriter, JsonWriterOptions); + writer = _jsonWriter = new Utf8JsonWriter(bufferWriter, JsonWriterOpts); } else { @@ -52,7 +52,7 @@ public int Serialize(ICountableBufferWriter bufferWriter, T? value) writer.Reset(bufferWriter); } - JsonSerializer.Serialize(writer, value, _options); + JsonSerializer.Serialize(writer, value, _opts); var bytesCommitted = (int)writer.BytesCommitted; writer.Reset(NullBufferWriter.Instance); @@ -62,13 +62,13 @@ public int Serialize(ICountableBufferWriter bufferWriter, T? value) public T? Deserialize(in ReadOnlySequence buffer) { var reader = new Utf8JsonReader(buffer); // Utf8JsonReader is ref struct, no allocate. - return JsonSerializer.Deserialize(ref reader, _options); + return JsonSerializer.Deserialize(ref reader, _opts); } public object? Deserialize(in ReadOnlySequence buffer, Type type) { var reader = new Utf8JsonReader(buffer); // Utf8JsonReader is ref struct, no allocate. - return JsonSerializer.Deserialize(ref reader, type, _options); + return JsonSerializer.Deserialize(ref reader, type, _opts); } private sealed class NullBufferWriter : IBufferWriter diff --git a/src/NATS.Client.Core/IServerInfo.cs b/src/NATS.Client.Core/INatsServerInfo.cs similarity index 95% rename from src/NATS.Client.Core/IServerInfo.cs rename to src/NATS.Client.Core/INatsServerInfo.cs index 300f64d43..108fd21fa 100644 --- a/src/NATS.Client.Core/IServerInfo.cs +++ b/src/NATS.Client.Core/INatsServerInfo.cs @@ -1,6 +1,6 @@ namespace NATS.Client.Core; -public interface IServerInfo +public interface INatsServerInfo { string Id { get; } diff --git a/src/NATS.Client.Core/Internal/ClientOpts.cs b/src/NATS.Client.Core/Internal/ClientOpts.cs index 65000dbf9..f004001d8 100644 --- a/src/NATS.Client.Core/Internal/ClientOpts.cs +++ b/src/NATS.Client.Core/Internal/ClientOpts.cs @@ -40,7 +40,7 @@ private ClientOpts(NatsOpts opts) public bool TLSRequired { get; init; } [JsonPropertyName("nkey")] - public string? Nkey { get; set; } + public string? NKey { get; set; } /// The JWT that identifies a user permissions and account. [JsonPropertyName("jwt")] diff --git a/src/NATS.Client.Core/Internal/ServerInfo.cs b/src/NATS.Client.Core/Internal/ServerInfo.cs index 7d45e0626..ce66aa3f1 100644 --- a/src/NATS.Client.Core/Internal/ServerInfo.cs +++ b/src/NATS.Client.Core/Internal/ServerInfo.cs @@ -4,7 +4,7 @@ namespace NATS.Client.Core.Internal; // Defined from `type Info struct` in nats-server // https://github.com/nats-io/nats-server/blob/a23b1b7/server/server.go#L61 -internal sealed record ServerInfo : IServerInfo +internal sealed record ServerInfo : INatsServerInfo { [JsonPropertyName("server_id")] public string Id { get; set; } = string.Empty; diff --git a/src/NATS.Client.Core/Internal/UserCredentials.cs b/src/NATS.Client.Core/Internal/UserCredentials.cs index 9827d35f0..898060841 100644 --- a/src/NATS.Client.Core/Internal/UserCredentials.cs +++ b/src/NATS.Client.Core/Internal/UserCredentials.cs @@ -9,7 +9,7 @@ public UserCredentials(NatsAuthOpts authOpts) { Jwt = authOpts.Jwt; Seed = authOpts.Seed; - Nkey = authOpts.Nkey; + NKey = authOpts.NKey; Token = authOpts.Token; if (!string.IsNullOrEmpty(authOpts.CredsFile)) @@ -19,7 +19,7 @@ public UserCredentials(NatsAuthOpts authOpts) if (!string.IsNullOrEmpty(authOpts.NKeyFile)) { - (Seed, Nkey) = LoadNKeyFile(authOpts.NKeyFile); + (Seed, NKey) = LoadNKeyFile(authOpts.NKeyFile); } } @@ -27,7 +27,7 @@ public UserCredentials(NatsAuthOpts authOpts) public string? Seed { get; } - public string? Nkey { get; } + public string? NKey { get; } public string? Token { get; } @@ -36,7 +36,7 @@ public UserCredentials(NatsAuthOpts authOpts) if (Seed == null || nonce == null) return null; - using var kp = Nkeys.FromSeed(Seed); + using var kp = NKeys.FromSeed(Seed); var bytes = kp.Sign(Encoding.ASCII.GetBytes(nonce)); var sig = CryptoBytes.ToBase64String(bytes); @@ -46,7 +46,7 @@ public UserCredentials(NatsAuthOpts authOpts) internal void Authenticate(ClientOpts opts, ServerInfo? info) { opts.JWT = Jwt; - opts.Nkey = Nkey; + opts.NKey = NKey; opts.AuthToken = Token; opts.Sig = info is { AuthRequired: true, Nonce: { } } ? Sign(info.Nonce) : null; } diff --git a/src/NATS.Client.Core/NkeyPair.cs b/src/NATS.Client.Core/NKeyPair.cs similarity index 95% rename from src/NATS.Client.Core/NkeyPair.cs rename to src/NATS.Client.Core/NKeyPair.cs index 5a96c58ce..4e3e5f416 100644 --- a/src/NATS.Client.Core/NkeyPair.cs +++ b/src/NATS.Client.Core/NKeyPair.cs @@ -7,7 +7,7 @@ namespace NATS.Client.Core; /// Partial implementation of the NATS Ed25519 KeyPair. This is not complete, but provides enough /// functionality to implement the client side NATS 2.0 security scheme. /// -public class NkeyPair : IDisposable +public class NKeyPair : IDisposable { private byte[] _seed; private byte[] _expandedPrivateKey; @@ -15,7 +15,7 @@ public class NkeyPair : IDisposable private bool _disposedValue = false; // To detect redundant calls - internal NkeyPair(byte[] userSeed) + internal NKeyPair(byte[] userSeed) { if (userSeed == null) throw new NatsException("seed cannot be null"); @@ -50,8 +50,8 @@ public byte[] PrivateKeySeed /// public void Wipe() { - Nkeys.Wipe(ref _seed); - Nkeys.Wipe(ref _expandedPrivateKey); + NKeys.Wipe(ref _seed); + NKeys.Wipe(ref _expandedPrivateKey); } /// @@ -67,7 +67,7 @@ public byte[] Sign(byte[] src) } /// - /// Releases all resources used by the NkeyPair. + /// Releases all resources used by the NKeyPair. /// public void Dispose() { @@ -75,7 +75,7 @@ public void Dispose() } /// - /// Releases the unmanaged resources used by the NkeyPair and optionally releases the managed resources. + /// Releases the unmanaged resources used by the NKeyPair and optionally releases the managed resources. /// /// true to release both managed and unmanaged resources; false to release only unmanaged resources. protected virtual void Dispose(bool disposing) @@ -93,9 +93,9 @@ protected virtual void Dispose(bool disposing) } /// -/// Nkeys is a class provided to manipulate Nkeys and generate NkeyPairs. +/// NKeys is a class provided to manipulate NKeys and generate NKeyPairs. /// -public class Nkeys +public class NKeys { // PrefixByteSeed is the version byte used for encoded NATS Seeds private const byte PrefixByteSeed = 18 << 3; // Base32-encodes to 'S...' @@ -124,7 +124,7 @@ public class Nkeys /// /// Decodes a base 32 encoded NKey into a nkey seed and verifies the checksum. /// - /// Base 32 encoded Nkey. + /// Base 32 encoded NKey. /// public static byte[] Decode(string src) { @@ -163,16 +163,16 @@ public static void Wipe(string src) } /// - /// Creates an NkeyPair from a private seed String. + /// Creates an NKeyPair from a private seed String. /// /// /// A NATS Ed25519 Keypair - public static NkeyPair FromSeed(string seed) + public static NKeyPair FromSeed(string seed) { var userSeed = DecodeSeed(seed); try { - var kp = new NkeyPair(userSeed); + var kp = new NKeyPair(userSeed); return kp; } finally @@ -215,7 +215,7 @@ public static string CreateOperatorSeed() /// A the public key corresponding to Seed public static string PublicKeyFromSeed(string seed) { - var s = Nkeys.Decode(seed); + var s = NKeys.Decode(seed); if ((s[0] & (31 << 3)) != PrefixByteSeed) { throw new NatsException("Not a seed"); @@ -258,7 +258,7 @@ internal static byte[] DecodeSeed(byte[] raw) internal static byte[] DecodeSeed(string src) { - return DecodeSeed(Nkeys.Decode(src)); + return DecodeSeed(NKeys.Decode(src)); } internal static string Encode(byte prefixbyte, bool seed, byte[] src) diff --git a/src/NATS.Client.Core/NatsAuthOpts.cs b/src/NATS.Client.Core/NatsAuthOpts.cs index ab2fc3700..ca6012ba5 100644 --- a/src/NATS.Client.Core/NatsAuthOpts.cs +++ b/src/NATS.Client.Core/NatsAuthOpts.cs @@ -12,7 +12,7 @@ public record NatsAuthOpts public string? Jwt { get; init; } - public string? Nkey { get; init; } + public string? NKey { get; init; } public string? Seed { get; init; } diff --git a/src/NATS.Client.Core/NatsConnection.cs b/src/NATS.Client.Core/NatsConnection.cs index 12b8af449..cf578cbee 100644 --- a/src/NATS.Client.Core/NatsConnection.cs +++ b/src/NATS.Client.Core/NatsConnection.cs @@ -72,7 +72,7 @@ public NatsConnection(NatsOpts opts) SubscriptionManager = new SubscriptionManager(this, InboxPrefix); _logger = opts.LoggerFactory.CreateLogger(); _clientOpts = ClientOpts.Create(Opts); - HeaderParser = new HeaderParser(opts.HeaderEncoding); + HeaderParser = new NatsHeaderParser(opts.HeaderEncoding); } // events @@ -86,9 +86,9 @@ public NatsConnection(NatsOpts opts) public NatsConnectionState ConnectionState { get; private set; } - public IServerInfo? ServerInfo => WritableServerInfo; // server info is set when received INFO + public INatsServerInfo? ServerInfo => WritableServerInfo; // server info is set when received INFO - public HeaderParser HeaderParser { get; } + public NatsHeaderParser HeaderParser { get; } internal SubscriptionManager SubscriptionManager { get; } diff --git a/src/NATS.Client.Core/HeaderParser.cs b/src/NATS.Client.Core/NatsHeaderParser.cs similarity index 98% rename from src/NATS.Client.Core/HeaderParser.cs rename to src/NATS.Client.Core/NatsHeaderParser.cs index aa843f8f5..e26077aa5 100644 --- a/src/NATS.Client.Core/HeaderParser.cs +++ b/src/NATS.Client.Core/NatsHeaderParser.cs @@ -12,7 +12,7 @@ // ReSharper disable PossiblyImpureMethodCallOnReadonlyVariable namespace NATS.Client.Core; -public class HeaderParser +public class NatsHeaderParser { private const byte ByteCR = (byte)'\r'; private const byte ByteLF = (byte)'\n'; @@ -23,7 +23,7 @@ public class HeaderParser private readonly Encoding _encoding; - public HeaderParser(Encoding encoding) => _encoding = encoding; + public NatsHeaderParser(Encoding encoding) => _encoding = encoding; public bool ParseHeaders(SequenceReader reader, NatsHeaders headers) { diff --git a/src/NATS.Client.Core/NatsMsg.cs b/src/NATS.Client.Core/NatsMsg.cs index f90f609ba..4c4cd7a8c 100644 --- a/src/NATS.Client.Core/NatsMsg.cs +++ b/src/NATS.Client.Core/NatsMsg.cs @@ -17,7 +17,7 @@ internal static NatsMsg Build( in ReadOnlySequence? headersBuffer, in ReadOnlySequence payloadBuffer, INatsConnection? connection, - HeaderParser headerParser) + NatsHeaderParser headerParser) { NatsHeaders? headers = null; @@ -81,7 +81,7 @@ internal static NatsMsg Build( in ReadOnlySequence? headersBuffer, in ReadOnlySequence payloadBuffer, INatsConnection? connection, - HeaderParser headerParser, + NatsHeaderParser headerParser, INatsSerializer serializer) { // Consider an empty payload as null or default value for value types. This way we are able to diff --git a/src/NATS.Client.Core/NatsOpts.cs b/src/NATS.Client.Core/NatsOpts.cs index 7923a8bc2..006807b1a 100644 --- a/src/NATS.Client.Core/NatsOpts.cs +++ b/src/NATS.Client.Core/NatsOpts.cs @@ -71,7 +71,7 @@ public sealed record NatsOpts Headers: true, AuthOpts: NatsAuthOpts.Default, TlsOpts: NatsTlsOpts.Default, - Serializer: JsonNatsSerializer.Default, + Serializer: NatsJsonSerializer.Default, LoggerFactory: NullLoggerFactory.Instance, WriterBufferSize: 65534, // 32767 ReaderBufferSize: 1048576, diff --git a/src/NATS.Client.Core/NatsSubBase.cs b/src/NATS.Client.Core/NatsSubBase.cs index b3459775c..ab0a15de2 100644 --- a/src/NATS.Client.Core/NatsSubBase.cs +++ b/src/NATS.Client.Core/NatsSubBase.cs @@ -225,7 +225,7 @@ internal virtual IEnumerable GetReconnectCommands(int sid) /// /// Subject received for this subscription. This might not be the subject you subscribed to especially when using wildcards. For example, if you subscribed to events.* you may receive events.open. /// Subject the sender wants you to send messages back to it. - /// Raw headers bytes. You can use to decode them. + /// Raw headers bytes. You can use to decode them. /// Raw payload bytes. /// protected abstract ValueTask ReceiveInternalAsync(string subject, string? replyTo, ReadOnlySequence? headersBuffer, ReadOnlySequence payloadBuffer); diff --git a/src/NATS.Client.JetStream/NatsJSSubConsume.cs b/src/NATS.Client.JetStream/NatsJSSubConsume.cs index 6c6e8fc92..d6a75a584 100644 --- a/src/NATS.Client.JetStream/NatsJSSubConsume.cs +++ b/src/NATS.Client.JetStream/NatsJSSubConsume.cs @@ -111,7 +111,7 @@ public ValueTask CallMsgNextAsync(ConsumerGetnextRequest request, CancellationTo Connection.PubModelAsync( subject: $"{_context.Opts.ApiPrefix}.CONSUMER.MSG.NEXT.{_stream}.{_consumer}", data: request, - serializer: JsonNatsSerializer.Default, + serializer: NatsJsonSerializer.Default, replyTo: Subject, headers: default, cancellationToken); @@ -153,7 +153,7 @@ internal override IEnumerable GetReconnectCommands(int sid) replyTo: Subject, headers: default, value: request, - serializer: JsonNatsSerializer.Default, + serializer: NatsJsonSerializer.Default, cancellationToken: default); } diff --git a/src/NATS.Client.JetStream/NatsJSSubFetch.cs b/src/NATS.Client.JetStream/NatsJSSubFetch.cs index 9db8545b9..a9e20654d 100644 --- a/src/NATS.Client.JetStream/NatsJSSubFetch.cs +++ b/src/NATS.Client.JetStream/NatsJSSubFetch.cs @@ -93,7 +93,7 @@ public ValueTask CallMsgNextAsync(ConsumerGetnextRequest request, CancellationTo Connection.PubModelAsync( subject: $"{_context.Opts.ApiPrefix}.CONSUMER.MSG.NEXT.{_stream}.{_consumer}", data: request, - serializer: JsonNatsSerializer.Default, + serializer: NatsJsonSerializer.Default, replyTo: Subject, headers: default, cancellationToken); @@ -126,7 +126,7 @@ internal override IEnumerable GetReconnectCommands(int sid) replyTo: Subject, headers: default, value: request, - serializer: JsonNatsSerializer.Default, + serializer: NatsJsonSerializer.Default, cancellationToken: default); } diff --git a/tests/NATS.Client.Core.Tests/LowLevelApiTest.cs b/tests/NATS.Client.Core.Tests/LowLevelApiTest.cs index 4f85763d5..357b1ec41 100644 --- a/tests/NATS.Client.Core.Tests/LowLevelApiTest.cs +++ b/tests/NATS.Client.Core.Tests/LowLevelApiTest.cs @@ -28,7 +28,7 @@ await Retry.Until( for (var i = 0; i < 10; i++) { var headers = new NatsHeaders { { "X-Test", $"value-{i}" } }; - await nats.PubModelAsync($"foo.data{i}", i, JsonNatsSerializer.Default, "bar", headers); + await nats.PubModelAsync($"foo.data{i}", i, NatsJsonSerializer.Default, "bar", headers); } await nats.PubAsync("foo.done"); diff --git a/tests/NATS.Client.Core.Tests/NatsConnectionTest.Auth.cs b/tests/NATS.Client.Core.Tests/NatsConnectionTest.Auth.cs index c7f33ca89..0818297f9 100644 --- a/tests/NATS.Client.Core.Tests/NatsConnectionTest.Auth.cs +++ b/tests/NATS.Client.Core.Tests/NatsConnectionTest.Auth.cs @@ -32,7 +32,7 @@ NatsOpts.Default with { AuthOpts = NatsAuthOpts.Default with { - Nkey = "UALQSMXRSAA7ZXIGDDJBJ2JOYJVQIWM3LQVDM5KYIPG4EP3FAGJ47BOJ", + NKey = "UALQSMXRSAA7ZXIGDDJBJ2JOYJVQIWM3LQVDM5KYIPG4EP3FAGJ47BOJ", Seed = "SUAAVWRZG6M5FA5VRRGWSCIHKTOJC7EWNIT4JV3FTOIPO4OBFR5WA7X5TE", }, }), diff --git a/tests/NATS.Client.Core.Tests/NatsHeaderTest.cs b/tests/NATS.Client.Core.Tests/NatsHeaderTest.cs index 8fd768878..59ca96f51 100644 --- a/tests/NATS.Client.Core.Tests/NatsHeaderTest.cs +++ b/tests/NATS.Client.Core.Tests/NatsHeaderTest.cs @@ -34,7 +34,7 @@ public void WriterTests() [Fact] public void ParserTests() { - var parser = new HeaderParser(Encoding.UTF8); + var parser = new NatsHeaderParser(Encoding.UTF8); var text = "NATS/1.0 123 Test Message\r\nk1: v1\r\nk2: v2-0\r\nk2: v2-1\r\na-long-header-key: value\r\nkey: a-long-header-value\r\n\r\n"; var input = new SequenceReader(new ReadOnlySequence(Encoding.UTF8.GetBytes(text))); var headers = new NatsHeaders(); @@ -77,7 +77,7 @@ public void ParserTests() [InlineData("test message", NatsHeaders.Messages.Text)] public void ParserMessageEnumTests(string message, NatsHeaders.Messages result) { - var parser = new HeaderParser(Encoding.UTF8); + var parser = new NatsHeaderParser(Encoding.UTF8); var text = $"NATS/1.0 100 {message}\r\n\r\n"; var input = new SequenceReader(new ReadOnlySequence(Encoding.UTF8.GetBytes(text))); var headers = new NatsHeaders(); @@ -91,7 +91,7 @@ public void ParserVersionErrorTests() { var exception = Assert.Throws(() => { - var parser = new HeaderParser(Encoding.UTF8); + var parser = new NatsHeaderParser(Encoding.UTF8); var text = "NATS/2.0\r\n\r\n"; var input = new SequenceReader(new ReadOnlySequence(Encoding.UTF8.GetBytes(text))); var headers = new NatsHeaders(); @@ -105,7 +105,7 @@ public void ParserCodeErrorTests() { var exception = Assert.Throws(() => { - var parser = new HeaderParser(Encoding.UTF8); + var parser = new NatsHeaderParser(Encoding.UTF8); var text = "NATS/1.0 x\r\n\r\n"; var input = new SequenceReader(new ReadOnlySequence(Encoding.UTF8.GetBytes(text))); var headers = new NatsHeaders(); @@ -126,7 +126,7 @@ public void ParserCodeErrorTests() [InlineData("NATS/1.0 123456 test test 3\r\nk:v\r\n\r\n", 123456, "test test 3", 1)] public void ParserHeaderVersionOnlyTests(string text, int code, string message, int headerCount) { - var parser = new HeaderParser(Encoding.UTF8); + var parser = new NatsHeaderParser(Encoding.UTF8); var input = new SequenceReader(new ReadOnlySequence(Encoding.UTF8.GetBytes(text))); var headers = new NatsHeaders(); parser.ParseHeaders(input, headers); @@ -143,7 +143,7 @@ public void ParserMultiSpanTests() const string text1 = "NATS/1.0 123 Test "; const string text2 = "Message\r\n\r\n"; - var parser = new HeaderParser(Encoding.UTF8); + var parser = new NatsHeaderParser(Encoding.UTF8); var builder = new SeqeunceBuilder(); builder.Append(Encoding.UTF8.GetBytes(text1)); builder.Append(Encoding.UTF8.GetBytes(text2));