4
4
using System . Net . Http ;
5
5
using System . Net . Http . Headers ;
6
6
using System . Runtime . CompilerServices ;
7
+ using System . Threading ;
7
8
using System . Threading . Tasks ;
8
9
using WebPush . Util ;
9
10
@@ -26,14 +27,14 @@ public class WebPushClient : IDisposable
26
27
27
28
public WebPushClient ( )
28
29
{
29
-
30
+
30
31
}
31
32
32
33
public WebPushClient ( HttpClient httpClient )
33
34
{
34
35
_httpClient = httpClient ;
35
36
}
36
-
37
+
37
38
public WebPushClient ( HttpClientHandler httpClientHandler )
38
39
{
39
40
_httpClientHandler = httpClientHandler ;
@@ -142,7 +143,7 @@ public HttpRequestMessage GenerateRequestDetails(PushSubscription subscription,
142
143
143
144
if ( options != null )
144
145
{
145
- var validOptionsKeys = new List < string > { "headers" , "gcmAPIKey" , "vapidDetails" , "TTL" } ;
146
+ var validOptionsKeys = new List < string > { "headers" , "gcmAPIKey" , "vapidDetails" , "TTL" } ;
146
147
foreach ( var key in options . Keys )
147
148
{
148
149
if ( ! validOptionsKeys . Contains ( key ) )
@@ -181,7 +182,7 @@ public HttpRequestMessage GenerateRequestDetails(PushSubscription subscription,
181
182
}
182
183
183
184
//at this stage ttl cannot be null.
184
- timeToLive = ( int ) ttl ;
185
+ timeToLive = ( int ) ttl ;
185
186
}
186
187
}
187
188
@@ -257,10 +258,10 @@ public HttpRequestMessage GenerateRequestDetails(PushSubscription subscription,
257
258
/// notification.
258
259
/// </param>
259
260
public void SendNotification ( PushSubscription subscription , string payload = null ,
260
- Dictionary < string , object > options = null )
261
+ Dictionary < string , object > options = null , CancellationToken cancellationToken = default )
261
262
{
262
263
var request = GenerateRequestDetails ( subscription , payload , options ) ;
263
- var sendAsyncTask = HttpClient . SendAsync ( request ) ;
264
+ var sendAsyncTask = HttpClient . SendAsync ( request , cancellationToken ) ;
264
265
sendAsyncTask . Wait ( ) ;
265
266
266
267
var response = sendAsyncTask . Result ;
@@ -277,7 +278,7 @@ public void SendNotification(PushSubscription subscription, string payload = nul
277
278
/// <param name="vapidDetails">The vapid details for the notification.</param>
278
279
public void SendNotification ( PushSubscription subscription , string payload , VapidDetails vapidDetails )
279
280
{
280
- var options = new Dictionary < string , object > { [ "vapidDetails" ] = vapidDetails } ;
281
+ var options = new Dictionary < string , object > { [ "vapidDetails" ] = vapidDetails } ;
281
282
SendNotification ( subscription , payload , options ) ;
282
283
}
283
284
@@ -290,7 +291,7 @@ public void SendNotification(PushSubscription subscription, string payload, Vapi
290
291
/// <param name="gcmApiKey">The GCM API key</param>
291
292
public void SendNotification ( PushSubscription subscription , string payload , string gcmApiKey )
292
293
{
293
- var options = new Dictionary < string , object > { [ "gcmAPIKey" ] = gcmApiKey } ;
294
+ var options = new Dictionary < string , object > { [ "gcmAPIKey" ] = gcmApiKey } ;
294
295
SendNotification ( subscription , payload , options ) ;
295
296
}
296
297
@@ -305,10 +306,10 @@ public void SendNotification(PushSubscription subscription, string payload, stri
305
306
/// notification.
306
307
/// </param>
307
308
public async Task SendNotificationAsync ( PushSubscription subscription , string payload = null ,
308
- Dictionary < string , object > options = null )
309
+ Dictionary < string , object > options = null , CancellationToken cancellationToken = default )
309
310
{
310
311
var request = GenerateRequestDetails ( subscription , payload , options ) ;
311
- var response = await HttpClient . SendAsync ( request ) ;
312
+ var response = await HttpClient . SendAsync ( request , cancellationToken ) ;
312
313
313
314
HandleResponse ( response , subscription ) ;
314
315
}
@@ -323,7 +324,7 @@ public async Task SendNotificationAsync(PushSubscription subscription, string pa
323
324
public async Task SendNotificationAsync ( PushSubscription subscription , string payload ,
324
325
VapidDetails vapidDetails )
325
326
{
326
- var options = new Dictionary < string , object > { [ "vapidDetails" ] = vapidDetails } ;
327
+ var options = new Dictionary < string , object > { [ "vapidDetails" ] = vapidDetails } ;
327
328
await SendNotificationAsync ( subscription , payload , options ) ;
328
329
}
329
330
@@ -336,7 +337,7 @@ public async Task SendNotificationAsync(PushSubscription subscription, string pa
336
337
/// <param name="gcmApiKey">The GCM API key</param>
337
338
public async Task SendNotificationAsync ( PushSubscription subscription , string payload , string gcmApiKey )
338
339
{
339
- var options = new Dictionary < string , object > { [ "gcmAPIKey" ] = gcmApiKey } ;
340
+ var options = new Dictionary < string , object > { [ "gcmAPIKey" ] = gcmApiKey } ;
340
341
await SendNotificationAsync ( subscription , payload , options ) ;
341
342
}
342
343
@@ -354,7 +355,7 @@ private static void HandleResponse(HttpResponseMessage response, PushSubscriptio
354
355
}
355
356
356
357
// Error
357
- var message = @"Received unexpected response code: " + ( int ) response . StatusCode ;
358
+ var message = @"Received unexpected response code: " + ( int ) response . StatusCode ;
358
359
switch ( response . StatusCode )
359
360
{
360
361
case HttpStatusCode . BadRequest :
@@ -365,7 +366,7 @@ private static void HandleResponse(HttpResponseMessage response, PushSubscriptio
365
366
message = "Payload too large" ;
366
367
break ;
367
368
368
- case ( HttpStatusCode ) 429 :
369
+ case ( HttpStatusCode ) 429 :
369
370
message = "Too many request." ;
370
371
break ;
371
372
@@ -377,7 +378,7 @@ private static void HandleResponse(HttpResponseMessage response, PushSubscriptio
377
378
378
379
throw new WebPushException ( message , response . StatusCode , response . Headers , subscription ) ;
379
380
}
380
-
381
+
381
382
public void Dispose ( )
382
383
{
383
384
if ( _httpClient != null && _isHttpClientInternallyCreated )
0 commit comments