Exemplo n.º 1
0
        // Token: 0x0600143E RID: 5182 RVA: 0x00074D24 File Offset: 0x00072F24
        internal static void LogInvalidSubscription(Guid mailboxGuid, PushNotificationSubscription subscription)
        {
            string text = subscription.ToFullString();

            PushNotificationsCrimsonEvents.InvalidSubscriptionInMailbox.LogPeriodic <Guid, string>(text, CrimsonConstants.DefaultLogPeriodicSuppressionInMinutes, mailboxGuid, text);
            ExTraceGlobals.PushNotificationAssistantTracer.TraceWarning <string, Guid>(0L, "An invalid notification was detected in mailbox '{0}': '{1}'.", text, mailboxGuid);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Create([FromBody] PushNotificationSubscription subscription)
        {
            var pushSubscription = new PushSubscription(subscription.Endpoint, subscription.Key, subscription.AuthSecret);
            var vapidDetails     = new VapidDetails(_vapidSettings.Subject, _vapidSettings.PublicKey, _vapidSettings.PrivateKey);

            var webPushClient = new WebPushClient();

            webPushClient.SetVapidDetails(vapidDetails);

            //TODO; store pushsubscription for later use
            _pushSubscription = pushSubscription;
            _vapidDetails     = vapidDetails;

            // send notification
            var payload = new PushNotificationPayload
            {
                Msg  = "Thank you for subscribing",
                Icon = "[URL to an image to display in the notification]"
            };

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

            return(new OkResult());
        }
Exemplo n.º 3
0
 public PushNotificationServerSubscription(PushNotificationSubscription subscription, DateTime lastUpdated, string installationId)
 {
     base.AppId = subscription.AppId;
     base.DeviceNotificationId   = subscription.DeviceNotificationId;
     base.DeviceNotificationType = subscription.DeviceNotificationType;
     base.InboxUnreadCount       = subscription.InboxUnreadCount;
     this.LastSubscriptionUpdate = lastUpdated;
     base.SubscriptionOption     = subscription.SubscriptionOption;
     this.InstallationId         = installationId;
 }
Exemplo n.º 4
0
        public void Add(PushNotificationSubscription pushSubscription)
        {
            if (_subscriptions.Any(x => x.P256DH == pushSubscription.Key && x.Auth == pushSubscription.AuthSecret))
            {
                return;
            }


            var subscription = new PushSubscription(pushSubscription.Endpoint, pushSubscription.Key, pushSubscription.AuthSecret);

            _subscriptions.Add(subscription);
        }
        public async Task DeleteSubscription(PushNotificationSubscription subscriptionToDelete)
        {
            var uri = UriFactory.CreateDocumentCollectionUri(_cosmosConfig.DefaultDb,
                                                             _cosmosConfig.SubscribersCollection);


            var queryString = $"SELECT * FROM c WHERE c.Endpoint = \"{subscriptionToDelete.Endpoint}\"";
            var currentDoc  = _client.CreateDocumentQuery <Document>(uri,
                                                                     queryString,
                                                                     new FeedOptions {
                MaxItemCount = 1
            })
                              .ToList()
                              .FirstOrDefault();

            if (currentDoc != null)
            {
                await _client.DeleteDocumentAsync(currentDoc.SelfLink);
            }
        }
Exemplo n.º 6
0
        // Token: 0x0600141D RID: 5149 RVA: 0x000741BC File Offset: 0x000723BC
        internal void UpdateSubscriptionData(Guid mailboxGuid, PushNotificationSubscription subscriptionContract)
        {
            PushNotificationSubscriptionOption subscriptionOption = subscriptionContract.GetSubscriptionOption();

            this.subscribedMailboxes.AddOrUpdate(mailboxGuid, (byte)subscriptionOption, (Guid key, byte oldValue) => (byte)subscriptionOption);
            if (subscriptionContract.InboxUnreadCount != null && subscriptionContract.InboxUnreadCount > 0L)
            {
                CachedState cachedState = AssistantsService.CachedObjectsList.GetCachedState(mailboxGuid);
                using (new PushNotificationDataHandler.CachedStateReadLock(cachedState))
                {
                    MailboxData mailboxData = (MailboxData)cachedState.State[9];
                    if (mailboxData != null)
                    {
                        using (new PushNotificationDataHandler.CachedStateUpgradeWriteLock(cachedState))
                        {
                            mailboxData.InboxUnreadCount = subscriptionContract.InboxUnreadCount.Value;
                        }
                    }
                }
            }
        }
        public async Task <(bool, int)> AddNewSubscriber(PushNotificationSubscription newSubscription, string baseUrl)
        {
            var pushSub = new PushSubscription(newSubscription.Endpoint, newSubscription.Key, newSubscription.AuthSecret);


            await SavePushSubscription(pushSub);

            var payload = new PushNotificationPayload
            {
                Msg  = "Thank you for subscribing",
                Icon = GetIconUrl(baseUrl)
            };

            try
            {
                await _pushClient.SendNotificationAsync(pushSub, JsonConvert.SerializeObject(payload));

                return(true, 200);
            }
            catch (WebPushException wpe)
            {
                return(false, (int)wpe.StatusCode);
            }
        }
 // Token: 0x06001403 RID: 5123 RVA: 0x00073F6C File Offset: 0x0007216C
 private bool IsSubscriptionSuitable(PushNotificationSubscription subscription)
 {
     return(subscription.Platform.SupportsSubscriptions() && !string.IsNullOrWhiteSpace(subscription.AppId) && !string.IsNullOrWhiteSpace(subscription.DeviceNotificationId));
 }
Exemplo n.º 9
0
 public IActionResult CreateNotification([FromBody] PushNotificationSubscription pushSubscription)
 {
     _pushSusbscriptions.Add(pushSubscription);
     return(NoContent());
 }
        public async Task <IActionResult> DeleteSubscription([FromBody] PushNotificationSubscription subscription)
        {
            await _pushNotifcationService.DeleteSubscription(subscription);

            return(new OkResult());
        }
        public async Task <IActionResult> Create([FromBody] PushNotificationSubscription subscription)
        {
            var result = await _pushNotifcationService.AddNewSubscriber(subscription, Request.GetBaseUrl());

            return(!result.Item1 ? new StatusCodeResult(result.Item2) : new OkResult());
        }
 public void UpdateSubscriptionOnMailboxTable(IMailboxSession session, PushNotificationSubscription subscription)
 {
     this.UpdateSubscriptionOnMailboxTable(session, subscription.GetSubscriptionOption());
 }
Exemplo n.º 13
0
 // Token: 0x0600143F RID: 5183 RVA: 0x00074D5E File Offset: 0x00072F5E
 internal static void LogSuppressedNotifications(Guid mailboxGuid, PushNotificationSubscription subscription)
 {
     PushNotificationsCrimsonEvents.SuppressedNotificationsWhileOof.Log <string, Guid, string>(subscription.AppId, mailboxGuid, subscription.DeviceNotificationId);
     ExTraceGlobals.PushNotificationAssistantTracer.TraceDebug <string, Guid, string>(0L, "A notification was skipped because user is OOF. AppId - '{0}', Mailbox - '{1}', DeviceId - '{2}'", subscription.AppId, mailboxGuid, subscription.DeviceNotificationId);
 }