protected override void InternalProcessRecord() { TaskLogger.LogEnter(); ExchangePrincipal principal = ExchangePrincipal.FromADUser(base.DataObject, RemotingOptions.AllowCrossSite); using (MailboxSession mailboxSession = StoreTasksHelper.OpenMailboxSession(principal, "Remove-PushNotificationSubscription")) { using (IPushNotificationStorage pushNotificationStorage = PushNotificationStorage.Find(mailboxSession)) { if (pushNotificationStorage != null) { if (this.SubscriptionStoreId != null) { pushNotificationStorage.DeleteSubscription(this.SubscriptionStoreId.StoreObjectIdValue); } else if (this.Force || base.ShouldContinue(Strings.ConfirmRemoveUserPushNotificationSubscriptions(this.Mailbox.ToString()))) { if (base.ParameterSetName.Equals("RemoveStorage")) { PushNotificationStorage.DeleteStorage(mailboxSession); } else { pushNotificationStorage.DeleteAllSubscriptions(); } } } } } TaskLogger.LogExit(); }
public PushNotificationSynchronizerTask(IPushNotificationStorage storage , IOptions <PushNotificationOptions> options) { _hubConnection = new HubConnectionBuilder().AddNewtonsoftJsonProtocol(jsonOptions => { jsonOptions.PayloadSerializerSettings.TypeNameHandling = TypeNameHandling.Objects; jsonOptions.PayloadSerializerSettings.TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple; }) .WithAutomaticReconnect() .WithUrl(options.Value.HubUrl) .Build(); _subscription = _hubConnection.On <PushNotification>("Send", OnSend); _storage = storage; }
public static IPushNotificationStorage Create(IMailboxSession mailboxSession, IXSOFactory xsoFactory, IOrganizationIdConvertor organizationIdConvertor) { ArgumentValidator.ThrowIfNull("mailboxSession", mailboxSession); ArgumentValidator.ThrowIfNull("xsoFactory", xsoFactory); IPushNotificationStorage pushNotificationStorage = PushNotificationStorage.Find(mailboxSession, xsoFactory); if (pushNotificationStorage != null) { return(pushNotificationStorage); } ArgumentValidator.ThrowIfNull("mailboxSession.MailboxOwner", mailboxSession.MailboxOwner); ArgumentValidator.ThrowIfNull("organizationIdConvertor", organizationIdConvertor); if (ExTraceGlobals.StorageNotificationSubscriptionTracer.IsTraceEnabled(TraceType.DebugTrace)) { ExTraceGlobals.StorageNotificationSubscriptionTracer.TraceDebug <string>(0L, "PushNotificationStorage.Create: Creating a new Notification Subscription folder for user {0}.", (mailboxSession.MailboxOwner.ObjectId != null) ? mailboxSession.MailboxOwner.ObjectId.ToDNString() : string.Empty); } StoreObjectId folderId = mailboxSession.CreateDefaultFolder(DefaultFolderType.PushNotificationRoot); IFolder folder = xsoFactory.BindToFolder(mailboxSession, folderId); return(new PushNotificationStorage(folder, PushNotificationStorage.GetTenantId(mailboxSession), xsoFactory)); }
// Token: 0x060013D7 RID: 5079 RVA: 0x00073738 File Offset: 0x00071938 private bool PopulateSubscriptionsAndTenantId(IMapiEvent mapiEvent, IMailboxSession session, PushNotificationContext pushNotificationContext) { PushNotificationContext pushNotificationContext2; if (this.NotificationBatchManager.TryGetPushNotification(mapiEvent.MailboxGuid, out pushNotificationContext2)) { pushNotificationContext.Subscriptions = pushNotificationContext2.Subscriptions; pushNotificationContext.TenantId = pushNotificationContext2.TenantId; } else { using (IPushNotificationStorage pushNotificationStorage = this.XSOFactory.FindPushNotificationStorage(session)) { if (pushNotificationStorage != null) { pushNotificationContext.TenantId = pushNotificationStorage.TenantId; pushNotificationContext.Subscriptions = this.ResolveSubscriptions(session, pushNotificationStorage); } } } return(pushNotificationContext.Subscriptions != null && pushNotificationContext.Subscriptions.Count > 0); }
public PushNotificationManager(IPushNotificationStorage storage, IHubContext <PushNotificationHub> hubContext) { _hubContext = hubContext; _storage = storage; }
public ScalablePushNotificationManager(IPushNotificationStorage storage , IHubContext <PushNotificationHub> hubContext) : base(storage, hubContext) { }
// Token: 0x060013D8 RID: 5080 RVA: 0x000737D4 File Offset: 0x000719D4 private List <PushNotificationServerSubscription> ResolveSubscriptions(IMailboxSession session, IPushNotificationStorage storage) { List <PushNotificationServerSubscription> list = storage.GetActiveNotificationSubscriptions(session, this.AssistantConfig.SubscriptionExpirationInHours); if (list == null || list.Count == 0) { PushNotificationsAssistantPerfCounters.TotalSubscriptionsExpiredCleanup.Increment(); PushNotificationsAssistantPerfCounters.CurrentActiveUserSubscriptions.Decrement(); PushNotificationHelper.LogSubscriptionExpired(session.MailboxGuid); this.assistantCache.RemoveSubscriptions(session.MailboxGuid); this.MailboxTable.DisableSubscriptionOnMailboxTable(session); storage.DeleteExpiredSubscriptions(this.AssistantConfig.SubscriptionExpirationInHours); list = null; } else { list = list.Distinct(PushNotificationAssistantAdapter.SubscriptionComparer.Default).ToList <PushNotificationServerSubscription>(); PushNotificationHelper.LogActiveSubscriptions(session.MailboxGuid, list); if (session.IsMailboxOof()) { List <PushNotificationServerSubscription> list2 = new List <PushNotificationServerSubscription>(); foreach (PushNotificationServerSubscription pushNotificationServerSubscription in list) { if ((pushNotificationServerSubscription.GetSubscriptionOption() & PushNotificationSubscriptionOption.SuppressNotificationsWhenOof) == PushNotificationSubscriptionOption.NoSubscription) { list2.Add(pushNotificationServerSubscription); } else { PushNotificationHelper.LogSuppressedNotifications(session.MailboxGuid, pushNotificationServerSubscription); } } list = list2; } } return(list); }