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)); }
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)); }
public async Task AddPushNotificationSubscriptionAsync(PushNotificationSubscriptionDto subscriptionDto) { var pushNotificationEntity = mapper.Map <PushNotificationSubscriptionTable>(subscriptionDto); await context.PushNotificationSubscriptions.AddAsync(pushNotificationEntity); }