public async Task CreateOrUpdatePushSubscriptionAsync(PushSubscriptionRequest request) { Ensure.That(request, nameof(request)).IsNotNull(); await DeleteRegistrationsForDeviceAsync(request.DeviceHandle); await CreateRegistrationAsync(request); }
public async Task SubscribeUserTest() { var userId = Guid.NewGuid().ToString(); var token = Guid.NewGuid().ToString(); var userTag = TagHelper.GetUserTag(userId); var store = new Mock <ISettingsDataStore>(); store.Setup(x => x.DoesExistAsync(It.Is <string>(s => s == userId))) .ReturnsAsync(true); PushSubscriptionRequest request = null; var subscriber = new Mock <IPushNotificationSubscriber>(); subscriber.Setup(x => x.CreateOrUpdatePushSubscriptionAsync(It.IsAny <PushSubscriptionRequest>())) .Callback <PushSubscriptionRequest>((dto) => request = dto) .Returns(Task.CompletedTask); var service = new PushNotificationSubscriptionService(store.Object, subscriber.Object); await service.CreateOrUpdateSubscriptionAsync(new PushDeviceRequest(DevicePlatform.Android, token) { UserId = userId }); store.Verify(x => x.DoesExistAsync(userId), Times.Once); subscriber.Verify(x => x.CreateOrUpdatePushSubscriptionAsync(request), Times.Once); Assert.Equal(new[] { userTag }, request.Tags); Assert.Equal(token, request.DeviceHandle); Assert.Equal((int)DevicePlatform.Android, (int)request.Platform); }
public Task SendMessageAsync(PushSubscriptionRequest request, CancellationToken cancel) { CheckInit(); var topic = GetRedisTopic(request.Topic); _channel.Dispatch("subscribe @topic", new { topic }); return(Task.FromResult <Object>(null)); }
public async Task <ActionResult <SubscriptionDto> > Subscribe([FromBody] PushSubscriptionRequest request) { var subscription = new SubscriptionDto { Endpoint = request.Subscription.Endpoint, ExpirationTime = request.Subscription.ExpirationTime, Auth = request.Subscription.Keys.Auth, P256Dh = request.Subscription.Keys.P256Dh }; return(await _pushService.Subscribe(subscription, _userContextService.GetCurrentUser().Id)); }
private async Task CreateRegistrationAsync(PushSubscriptionRequest deviceUpdate) { var registration = PushRegistrationsFactory.CreateTemplateRegistration(deviceUpdate); try { await _hub.CreateRegistrationAsync(registration); } catch (MessagingException e) { throw new PushNotificationException("Error while trying to create device token registration in notification hub", e); } }
public static RegistrationDescription CreateTemplateRegistration(PushSubscriptionRequest subscription) { switch (subscription.Platform) { case PushPlatformEnum.iOS: return(new AppleTemplateRegistrationDescription(subscription.DeviceHandle, iOSTemplate, new HashSet <string>(subscription.Tags))); case PushPlatformEnum.Android: return(new FcmTemplateRegistrationDescription(subscription.DeviceHandle, androidTemplate, new HashSet <string>(subscription.Tags))); default: throw new NotSupportedException($"Unsupported platform '{subscription.Platform}'"); } }
public IActionResult Post([FromBody] PushSubscriptionRequest subscriptionRequest) { _webPushService.Create(1, subscriptionRequest.Endpoint, subscriptionRequest.P256dh, subscriptionRequest.Auth); return(new OkResult()); }