Ejemplo n.º 1
0
        public void ConvertPushNotificationDtoToTable()
        {
            // arrange
            var pushNotificationDto = new PushNotificationSubscriptionDto()
            {
                AuthSecret = "auth secret",
                EndPoint   = "end point",
                Key        = "key"
            };
            var pushNotificationTable = new PushNotificationSubscriptionTable()
            {
                Id         = 10,
                AuthSecret = "auth secret",
                EndPoint   = "end point",
                Key        = "key"
            };
            // act
            var pushNotification = mapper.Map <PushNotificationSubscriptionTable>(pushNotificationDto);

            // assert
            Assert.True(pushNotificationTable.IsPushNontificationTableEqual(pushNotification));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Create([FromBody] PushNotificationSubscriptionDto pushNotificationSubscription)
        {
            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }
            var pushSubscription = new PushSubscription(pushNotificationSubscription.EndPoint, pushNotificationSubscription.Key, pushNotificationSubscription.AuthSecret);
            var vapidDetails     = new VapidDetails(vapidSettings.Subject, vapidSettings.PublicKey, vapidSettings.PrivateKey);

            var webPushClient = new WebPushClient();

            webPushClient.SetVapidDetails(vapidDetails);

            await unitOfWork.Subscribers.AddPushNotificationSubscriptionAsync(pushNotificationSubscription);

            await this.unitOfWork.SaveAsync();

            var payload = new PushNotificationPayload
            {
                Title = "Welcome",
                Body  = "Now you won't miss any post :-)",
            };

            try
            {
                await webPushClient.SendNotificationAsync(pushSubscription,
                                                          JsonConvert.SerializeObject(payload), vapidDetails);
            }
            catch (WebPushException exception)
            {
                var statusCode = exception.StatusCode;
                return(StatusCode((int)statusCode, new { message = exception.Message }));
            }

            return(StatusCode(201));
        }
Ejemplo n.º 3
0
        public async Task AddPushNotificationSubscriptionAsync(PushNotificationSubscriptionDto subscriptionDto)
        {
            var pushNotificationEntity = mapper.Map <PushNotificationSubscriptionTable>(subscriptionDto);

            await context.PushNotificationSubscriptions.AddAsync(pushNotificationEntity);
        }