Skip to content

Commit 8c050b8

Browse files
committed
More C# 12 stuff
1 parent 60b5dde commit 8c050b8

6 files changed

+33
-47
lines changed

IPBanProBaseAPI.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ public void StartWebSocket(ClientWebSocket socket)
502502
/// <exception cref="HttpRequestException">Any error</exception>
503503
public async Task<T> MakeRequestAsync<T>(string pathAndQuery, object postJson = null, string method = null) where T : BaseModel
504504
{
505-
byte[] response = Array.Empty<byte>();
505+
byte[] response = [];
506506
try
507507
{
508508
await new SynchronizationContextRemover();

Model/IPAddressAsnNamesListModel.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public struct IPAddressAsnName
5151
/// ToString
5252
/// </summary>
5353
/// <returns>String</returns>
54-
public override string ToString()
54+
public override readonly string ToString()
5555
{
5656
return $"Id: {Id}, Name: {Name}, Lang: {LanguageCode}";
5757
}
@@ -61,7 +61,7 @@ public override string ToString()
6161
/// </summary>
6262
/// <param name="obj">Object</param>
6363
/// <returns>True if equal, false if not</returns>
64-
public override bool Equals(object obj)
64+
public override readonly bool Equals(object obj)
6565
{
6666
if (obj is IPAddressAsnName name)
6767
{
@@ -96,7 +96,7 @@ public override bool Equals(object obj)
9696
/// Get hash code
9797
/// </summary>
9898
/// <returns>Hash code</returns>
99-
public override int GetHashCode()
99+
public override readonly int GetHashCode()
100100
{
101101
return Id;
102102
}

Model/IPAddressCountryNamesListModel.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public struct IPAddressCountryName
5757
/// ToString
5858
/// </summary>
5959
/// <returns>String</returns>
60-
public override string ToString()
60+
public override readonly string ToString()
6161
{
6262
return $"Id: {Id}, Name: {Name}, Code: {CountryCode}, Lang: {LanguageCode}";
6363
}
@@ -67,7 +67,7 @@ public override string ToString()
6767
/// </summary>
6868
/// <param name="obj">Object</param>
6969
/// <returns>True if equal, false if not</returns>
70-
public override bool Equals(object obj)
70+
public override readonly bool Equals(object obj)
7171
{
7272
if (obj is IPAddressCountryName name)
7373
{
@@ -102,7 +102,7 @@ public override bool Equals(object obj)
102102
/// Get hash code
103103
/// </summary>
104104
/// <returns>Hash code</returns>
105-
public override int GetHashCode()
105+
public override readonly int GetHashCode()
106106
{
107107
return Id;
108108
}

Model/IPBanListModel.cs

+16-25
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,14 @@ public class RecentBannedIPAddressesModel : BaseModel
5656
/// <summary>
5757
/// Banned ip address
5858
/// </summary>
59+
/// <remarks>
60+
/// Constructor
61+
/// </remarks>
62+
/// <param name="ipAddress">IP address</param>
63+
/// <param name="banCount">Ban count</param>
5964
[Serializable]
60-
public class BannedIPAddress : IComparable<BannedIPAddress>
65+
public class BannedIPAddress(string ipAddress, long banCount) : IComparable<BannedIPAddress>
6166
{
62-
/// <summary>
63-
/// Constructor
64-
/// </summary>
65-
/// <param name="ipAddress">IP address</param>
66-
/// <param name="banCount">Ban count</param>
67-
public BannedIPAddress(string ipAddress, long banCount)
68-
{
69-
IPAddress = ipAddress;
70-
BanCount = banCount;
71-
}
7267

7368
/// <summary>
7469
/// ToString
@@ -121,40 +116,36 @@ public int CompareTo(BannedIPAddress other)
121116
/// </summary>
122117
[JsonProperty(IPBanProBaseAPI.KeyIPAddress)]
123118
[DataMember(Order = 1)]
124-
public string IPAddress { get; set; }
119+
public string IPAddress { get; set; } = ipAddress;
125120

126121
/// <summary>
127122
/// Ban count
128123
/// </summary>
129124
[JsonProperty(IPBanProBaseAPI.KeyCount)]
130125
[DataMember(Order = 2)]
131-
public long BanCount { get; set; }
126+
public long BanCount { get; set; } = banCount;
132127
}
133128

134129
/// <summary>
135130
/// Banned ip address
136131
/// </summary>
132+
/// <remarks>
133+
/// Constructor
134+
/// </remarks>
135+
/// <param name="ipAddress">IP address</param>
136+
/// <param name="banCount">Ban count</param>
137+
/// <param name="timestamp">Timestamp</param>
137138
[Serializable]
138139
[DataContract]
139-
public class RecentBannedIPAddress : BannedIPAddress, IComparable<RecentBannedIPAddress>
140+
public class RecentBannedIPAddress(string ipAddress, long banCount, DateTime timestamp) : BannedIPAddress(ipAddress, banCount), IComparable<RecentBannedIPAddress>
140141
{
141-
/// <summary>
142-
/// Constructor
143-
/// </summary>
144-
/// <param name="ipAddress">IP address</param>
145-
/// <param name="banCount">Ban count</param>
146-
/// <param name="timestamp">Timestamp</param>
147-
public RecentBannedIPAddress(string ipAddress, long banCount, DateTime timestamp) : base(ipAddress, banCount)
148-
{
149-
Timestamp = timestamp;
150-
}
151142

152143
/// <summary>
153144
/// Timestamp
154145
/// </summary>
155146
[JsonProperty("Timestamp")]
156147
[DataMember(Order = 1)]
157-
public DateTime Timestamp { get; set; }
148+
public DateTime Timestamp { get; set; } = timestamp;
158149

159150
/// <inheritdoc />
160151
public int CompareTo(RecentBannedIPAddress other)

Threading/SynchronizationContextRemover.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public struct SynchronizationContextRemover : INotifyCompletion
3030
/// <summary>
3131
/// Is the context completed
3232
/// </summary>
33-
public bool IsCompleted
33+
public readonly bool IsCompleted
3434
{
3535
get { return SynchronizationContext.Current is null; }
3636
}
@@ -39,7 +39,7 @@ public bool IsCompleted
3939
/// Fires when context completes
4040
/// </summary>
4141
/// <param name="continuation">Continuation</param>
42-
public void OnCompleted(Action continuation)
42+
public readonly void OnCompleted(Action continuation)
4343
{
4444
var prevContext = SynchronizationContext.Current;
4545
if (prevContext is null)
@@ -64,15 +64,15 @@ public void OnCompleted(Action continuation)
6464
/// Get an awaiter
6565
/// </summary>
6666
/// <returns></returns>
67-
public SynchronizationContextRemover GetAwaiter()
67+
public readonly SynchronizationContextRemover GetAwaiter()
6868
{
6969
return this;
7070
}
7171

7272
/// <summary>
7373
/// Get the result
7474
/// </summary>
75-
public void GetResult()
75+
public readonly void GetResult()
7676
{
7777
}
7878
}

WebSocket/ClientWebSocket.cs

+6-11
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,11 @@ namespace DigitalRuby.IPBanProSDK
3636
/// <summary>
3737
/// Wraps a client web socket for easy dispose later, along with auto-reconnect and message and reader queues
3838
/// </summary>
39-
public sealed class ClientWebSocket : IQueueMessage
39+
/// <remarks>
40+
/// Default constructor, does not begin listening immediately. You must set the properties and then call Start.
41+
/// </remarks>
42+
/// <param name="serializer">Serializer, null for default serializer</param>
43+
public sealed class ClientWebSocket(ISerializer serializer = null) : IQueueMessage
4044
{
4145
/// <summary>
4246
/// Client web socket implementation
@@ -159,7 +163,7 @@ public Task SendAsync(ArraySegment<byte> buffer, WebSocketMessageType messageTyp
159163

160164
private readonly AsyncQueue<object> messageQueue = new();
161165
private readonly Dictionary<string, ManualResetEvent> acks = [];
162-
private readonly ISerializer serializer;
166+
private readonly ISerializer serializer = (serializer ?? DefaultSerializer.Instance);
163167
private readonly CancellationTokenSource cancellationTokenSource = new();
164168

165169
// created from factory, allows swapping out underlying implementation
@@ -264,15 +268,6 @@ public static void RegisterWebSocketCreator(Func<IEnumerable<KeyValuePair<string
264268
webSocketCreator = creator;
265269
}
266270

267-
/// <summary>
268-
/// Default constructor, does not begin listening immediately. You must set the properties and then call Start.
269-
/// </summary>
270-
/// <param name="serializer">Serializer, null for default serializer</param>
271-
public ClientWebSocket(ISerializer serializer = null)
272-
{
273-
this.serializer = (serializer ?? DefaultSerializer.Instance);
274-
}
275-
276271
/// <summary>
277272
/// Start the web socket listening and processing
278273
/// </summary>

0 commit comments

Comments
 (0)