Skip to content

Commit e4a2e68

Browse files
author
divan
committed
Add cancellation token to SendNotification* methods
1 parent 05c1dbb commit e4a2e68

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

WebPush/WebPushClient.cs

+16-15
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Net.Http;
55
using System.Net.Http.Headers;
66
using System.Runtime.CompilerServices;
7+
using System.Threading;
78
using System.Threading.Tasks;
89
using WebPush.Util;
910

@@ -26,14 +27,14 @@ public class WebPushClient : IDisposable
2627

2728
public WebPushClient()
2829
{
29-
30+
3031
}
3132

3233
public WebPushClient(HttpClient httpClient)
3334
{
3435
_httpClient = httpClient;
3536
}
36-
37+
3738
public WebPushClient(HttpClientHandler httpClientHandler)
3839
{
3940
_httpClientHandler = httpClientHandler;
@@ -142,7 +143,7 @@ public HttpRequestMessage GenerateRequestDetails(PushSubscription subscription,
142143

143144
if (options != null)
144145
{
145-
var validOptionsKeys = new List<string> {"headers", "gcmAPIKey", "vapidDetails", "TTL"};
146+
var validOptionsKeys = new List<string> { "headers", "gcmAPIKey", "vapidDetails", "TTL" };
146147
foreach (var key in options.Keys)
147148
{
148149
if (!validOptionsKeys.Contains(key))
@@ -181,7 +182,7 @@ public HttpRequestMessage GenerateRequestDetails(PushSubscription subscription,
181182
}
182183

183184
//at this stage ttl cannot be null.
184-
timeToLive = (int) ttl;
185+
timeToLive = (int)ttl;
185186
}
186187
}
187188

@@ -257,10 +258,10 @@ public HttpRequestMessage GenerateRequestDetails(PushSubscription subscription,
257258
/// notification.
258259
/// </param>
259260
public void SendNotification(PushSubscription subscription, string payload = null,
260-
Dictionary<string, object> options = null)
261+
Dictionary<string, object> options = null, CancellationToken cancellationToken = default)
261262
{
262263
var request = GenerateRequestDetails(subscription, payload, options);
263-
var sendAsyncTask = HttpClient.SendAsync(request);
264+
var sendAsyncTask = HttpClient.SendAsync(request, cancellationToken);
264265
sendAsyncTask.Wait();
265266

266267
var response = sendAsyncTask.Result;
@@ -277,7 +278,7 @@ public void SendNotification(PushSubscription subscription, string payload = nul
277278
/// <param name="vapidDetails">The vapid details for the notification.</param>
278279
public void SendNotification(PushSubscription subscription, string payload, VapidDetails vapidDetails)
279280
{
280-
var options = new Dictionary<string, object> {["vapidDetails"] = vapidDetails};
281+
var options = new Dictionary<string, object> { ["vapidDetails"] = vapidDetails };
281282
SendNotification(subscription, payload, options);
282283
}
283284

@@ -290,7 +291,7 @@ public void SendNotification(PushSubscription subscription, string payload, Vapi
290291
/// <param name="gcmApiKey">The GCM API key</param>
291292
public void SendNotification(PushSubscription subscription, string payload, string gcmApiKey)
292293
{
293-
var options = new Dictionary<string, object> {["gcmAPIKey"] = gcmApiKey};
294+
var options = new Dictionary<string, object> { ["gcmAPIKey"] = gcmApiKey };
294295
SendNotification(subscription, payload, options);
295296
}
296297

@@ -305,10 +306,10 @@ public void SendNotification(PushSubscription subscription, string payload, stri
305306
/// notification.
306307
/// </param>
307308
public async Task SendNotificationAsync(PushSubscription subscription, string payload = null,
308-
Dictionary<string, object> options = null)
309+
Dictionary<string, object> options = null, CancellationToken cancellationToken = default)
309310
{
310311
var request = GenerateRequestDetails(subscription, payload, options);
311-
var response = await HttpClient.SendAsync(request);
312+
var response = await HttpClient.SendAsync(request, cancellationToken);
312313

313314
HandleResponse(response, subscription);
314315
}
@@ -323,7 +324,7 @@ public async Task SendNotificationAsync(PushSubscription subscription, string pa
323324
public async Task SendNotificationAsync(PushSubscription subscription, string payload,
324325
VapidDetails vapidDetails)
325326
{
326-
var options = new Dictionary<string, object> {["vapidDetails"] = vapidDetails};
327+
var options = new Dictionary<string, object> { ["vapidDetails"] = vapidDetails };
327328
await SendNotificationAsync(subscription, payload, options);
328329
}
329330

@@ -336,7 +337,7 @@ public async Task SendNotificationAsync(PushSubscription subscription, string pa
336337
/// <param name="gcmApiKey">The GCM API key</param>
337338
public async Task SendNotificationAsync(PushSubscription subscription, string payload, string gcmApiKey)
338339
{
339-
var options = new Dictionary<string, object> {["gcmAPIKey"] = gcmApiKey};
340+
var options = new Dictionary<string, object> { ["gcmAPIKey"] = gcmApiKey };
340341
await SendNotificationAsync(subscription, payload, options);
341342
}
342343

@@ -354,7 +355,7 @@ private static void HandleResponse(HttpResponseMessage response, PushSubscriptio
354355
}
355356

356357
// Error
357-
var message = @"Received unexpected response code: " + (int) response.StatusCode;
358+
var message = @"Received unexpected response code: " + (int)response.StatusCode;
358359
switch (response.StatusCode)
359360
{
360361
case HttpStatusCode.BadRequest:
@@ -365,7 +366,7 @@ private static void HandleResponse(HttpResponseMessage response, PushSubscriptio
365366
message = "Payload too large";
366367
break;
367368

368-
case (HttpStatusCode) 429:
369+
case (HttpStatusCode)429:
369370
message = "Too many request.";
370371
break;
371372

@@ -377,7 +378,7 @@ private static void HandleResponse(HttpResponseMessage response, PushSubscriptio
377378

378379
throw new WebPushException(message, response.StatusCode, response.Headers, subscription);
379380
}
380-
381+
381382
public void Dispose()
382383
{
383384
if (_httpClient != null && _isHttpClientInternallyCreated)

0 commit comments

Comments
 (0)