44using System . Net . Http ;
55using System . Net . Http . Headers ;
66using System . Runtime . CompilerServices ;
7+ using System . Threading ;
78using System . Threading . Tasks ;
89using 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