public PushNotificationsApiController(IPushSubscriptionStore subscriptionStore, IPushNotificationService notificationService, IPushNotificationsQueue pushNotificationsQueue, IOptions <Miscellenous> misc)
 {
     _subscriptionStore      = subscriptionStore;
     _notificationService    = notificationService;
     _pushNotificationsQueue = pushNotificationsQueue;
     _miscellenous           = misc.Value;
 }
        private async Task DequeueMessagesAsync()
        {
            while (!_stopTokenSource.IsCancellationRequested)
            {
                PushMessageEx pushmessage = await _messagesQueue.DequeueAsync(_stopTokenSource.Token);

                if (!_stopTokenSource.IsCancellationRequested)
                {
                    using (IServiceScope serviceScope = _serviceProvider.CreateScope())
                    {
                        IPushSubscriptionStore subscriptionStore = serviceScope.ServiceProvider.GetRequiredService <IPushSubscriptionStore>();

                        //await subscriptionStore.ForEachSubscriptionAsync((PushSubscription subscription) =>
                        //{
                        //    // Fire-and-forget
                        //    _notificationService.SendNotificationAsync(subscription, message, _stopTokenSource.Token);
                        //}, _stopTokenSource.Token);

                        await subscriptionStore.ForEachSubscriptionAsyncEx((SWSubscription sub) =>
                        {
                            PushSubscription subscription = new PushSubscription();
                            subscription.Endpoint         = sub.Endpoint;
                            subscription.SetKey(PushEncryptionKeyName.Auth, sub.Auth);
                            subscription.SetKey(PushEncryptionKeyName.P256DH, sub.P256DH);
                            // subscription.Keys
                            // Fire-and-forget
                            _notificationService.SendNotificationAsync(subscription, pushmessage.pushmessage, _stopTokenSource.Token);
                        }, _stopTokenSource.Token);
                    }
                }
            }
        }
예제 #3
0
 public PushNotificationsApiController(IPushSubscriptionStore subscriptionStore, IPushNotificationService notificationService, IPushNotificationsQueue pushNotificationsQueue, IMQTTClientService mqttClientService)
 {
     _subscriptionStore      = subscriptionStore;
     _notificationService    = notificationService;
     _pushNotificationsQueue = pushNotificationsQueue;
     _mqttClientService      = mqttClientService;
 }
예제 #4
0
        public PwaController(
            IServiceWorkerBuilder serviceWorkerBuilder,
            IGeneratePwaInitScript serviceWorkerInitScriptGenerator,
            IOptions <PwaOptions> pwaOptionsAccessor,
            IOptions <PushClientSettings> pushSettingsAccessor,
            IPushSubscriptionStore subscriptionStore,
            IPushNotificationService notificationService,
            IPushNotificationsQueue pushNotificationsQueue,
            IUserIdResolver userIdResolver,
            ITenantIdResolver tenantIdResolver,
            IResourceHelper resourceHelper
            )
        {
            _serviceWorkerBuilder             = serviceWorkerBuilder;
            _serviceWorkerInitScriptGenerator = serviceWorkerInitScriptGenerator;
            _options      = pwaOptionsAccessor.Value;
            _pushSettings = pushSettingsAccessor.Value;

            _subscriptionStore      = subscriptionStore;
            _notificationService    = notificationService;
            _pushNotificationsQueue = pushNotificationsQueue;
            _userIdResolver         = userIdResolver;
            _tenantIdResolver       = tenantIdResolver;
            _resourceHelper         = resourceHelper;
        }
예제 #5
0
 public PushService(PushServiceClient pushClient, IPushSubscriptionStore subscriptionStore,
                    ILogger <IPushService> logger, IPushSubscriptionStoreAccessorProvider subscriptionStoreAccessorProvider)
 {
     _pushClient        = pushClient;
     _subscriptionStore = subscriptionStore;
     _logger            = logger;
     _subscriptionStoreAccessorProvider = subscriptionStoreAccessorProvider;
 }
예제 #6
0
 public WebPushController(
     IPushSubscriptionStore subscriptionStore, IPushNotificationService notificationService,
     UserManager <ApplicationUser> userManager, ILogger <WebPushController> logger,
     IHttpContextAccessor contextAccessor) : base(contextAccessor, userManager, logger)
 {
     _subscriptionStore   = subscriptionStore;
     _notificationService = notificationService;
 }
예제 #7
0
 public void Dispose()
 {
     PushSubscriptionStore = null;
     if (!(_serviceScope is null))
     {
         _serviceScope.Dispose();
         _serviceScope = null;
     }
 }
예제 #8
0
 public PushServicePushNotificationService(
     PushServiceClient pushClient,
     IPushSubscriptionStore pushSubscriptionStore,
     ILogger <PushServicePushNotificationService> logger
     )
 {
     _pushClient            = pushClient;
     _pushSubscriptionStore = pushSubscriptionStore;
     _logger = logger;
 }
 public PushNotificationsApiController(
     IPushSubscriptionStore subscriptionStore, IPushNotificationService notificationService, IPushNotificationService pushNotificationService,
     IPushNotificationsQueue pushNotificationsQueue, IJwtFactory jwtFactory, DataDbContect context, IHttpContextAccessor acceessor)
 {
     _subscriptionStore       = subscriptionStore;
     _notificationService     = notificationService;
     _pushNotificationsQueue  = pushNotificationsQueue;
     _pushNotificationService = pushNotificationService;
     _jwtFactory = jwtFactory;
     _context    = context;
     _acceessor  = acceessor;
 }
예제 #10
0
 public SupportChatService(UserManager <ApplicationUser> userManager, IOptions <ChatSettings> chatSettings,
                           IConfiguration options,
                           IPushSubscriptionStore subscriptionStore, IPushNotificationService notificationService,
                           HubLifetimeManager <ChatHub> hub, SlackSupportClient slackSupport)
 {
     _chatSettings        = chatSettings.Value;
     _notificationService = notificationService;
     _hub               = hub;
     _options           = options;
     _userManager       = userManager;
     _subscriptionStore = subscriptionStore;
     _slackSupport      = slackSupport;
 }
예제 #11
0
 public ChatController(
     IHttpContextAccessor contextAccessor, UserManager <ApplicationUser> userManager,
     ILogger <ChatController> logger, IOptions <ChatSettings> chatSettings, IOptions <AppSettings> appSettings,
     IPushSubscriptionStore subscriptionStore, IPushNotificationService notificationService,
     HubLifetimeManager <ChatHub> hub, IMapper mapper, IUnitOfWork unitOfWork,
     IChatRepository chatRepository, ISupportChatService supportChatService) :
     base(contextAccessor, userManager, logger)
 {
     _chatRepository      = chatRepository;
     _unitOfWork          = unitOfWork;
     _chatSettings        = chatSettings.Value;
     _appSettings         = appSettings.Value;
     _subscriptionStore   = subscriptionStore;
     _notificationService = notificationService;
     _hub                = hub;
     _mapper             = mapper;
     _supportChatService = supportChatService;
 }
예제 #12
0
        private async Task DequeueMessagesAsync()
        {
            while (!_stopTokenSource.IsCancellationRequested)
            {
                PushMessage message = await _messagesQueue.DequeueAsync(_stopTokenSource.Token);

                if (!_stopTokenSource.IsCancellationRequested)
                {
                    using (IServiceScope serviceScope = _serviceProvider.CreateScope())
                    {
                        IPushSubscriptionStore subscriptionStore = serviceScope.ServiceProvider.GetRequiredService <IPushSubscriptionStore>();

                        await subscriptionStore.ForEachSubscriptionAsync((PushSubscription subscription) =>
                        {
                            // Fire-and-forget
                            _notificationService.SendNotificationAsync(subscription, message, _stopTokenSource.Token);
                        }, _stopTokenSource.Token);
                    }
                }
            }
        }
예제 #13
0
 public DebugController(IOptions <StorageSettings> settings, IOptions <AppSettings> appSettings,
                        HubLifetimeManager <DebugHub> hub,
                        IConfiguration config,
                        IPageParser pageParser,
                        IOptions <HelpersSettings> helpersSettings,
                        IOptions <AudioFileStorageSettings> audioFileStorageSettings,
                        IOptions <ImageFileStorageSettings> imageFileStorageSettings,
                        IOptions <JwtIssuerOptions> jwtIssuerOptions,
                        IPushSubscriptionStore subscriptionStore,
                        IEntryRepository entryRepository,
                        UserManager <ApplicationUser> userManager,
                        ILogger <DebugController> logger,
                        IMapper mapper,
                        IPushNotificationService notificationService,
                        IPodcastRepository podcastRepository,
                        IUnitOfWork unitOfWork,
                        IHttpContextAccessor contextAccessor,
                        IMailSender mailSender) : base(contextAccessor, userManager, logger)
 {
     _appSettings              = appSettings.Value;
     _storageSettings          = settings.Value;
     _helpersSettings          = helpersSettings.Value;
     _audioFileStorageSettings = audioFileStorageSettings.Value;
     _imageFileStorageSettings = imageFileStorageSettings.Value;
     _jwtIssuerOptions         = jwtIssuerOptions.Value;
     _hub                 = hub;
     _config              = config;
     _pageParser          = pageParser;
     _mapper              = mapper;
     _subscriptionStore   = subscriptionStore;
     _entryRepository     = entryRepository;
     _notificationService = notificationService;
     _podcastRepository   = podcastRepository;
     _unitOfWork          = unitOfWork;
     _mailSender          = mailSender;
 }
예제 #14
0
 public CosmosDbPushSubscriptionStoreAccessor(IPushSubscriptionStore pushSubscriptionStore)
 {
     PushSubscriptionStore = pushSubscriptionStore;
 }
예제 #15
0
        internal void NotifySubscribers(IPushNotificationsQueue pushNotificationsQueue, IPushSubscriptionStore subscriptionStore, string districtWiseCasesUrl)
        {
            subscriptionStore.ForEachSubscriptionAsync((subscription) =>
            {
                var currentDistrictCases = GetLatestCountForDistrict(subscription.District, districtWiseCasesUrl);
                if (currentDistrictCases > subscription.LatestConfirmedCase)
                {
                    pushNotificationsQueue.Enqueue(new Lib.Net.Http.WebPush.PushMessage($"Cases in your District {subscription.District} has increased the new number is {currentDistrictCases}")
                    {
                        Topic   = "Covid 19 Alert",
                        Urgency = Lib.Net.Http.WebPush.PushMessageUrgency.High
                    });
                    subscription.LatestConfirmedCase = currentDistrictCases;

                    subscriptionStore.UpdateSubscriptionAsync(subscription);
                }
            });
        }
예제 #16
0
 public HomeController(IBlogService blogService, IPushSubscriptionStore subscriptionStore, PushServiceClient pushClient)
 {
     _blogService       = blogService;
     _subscriptionStore = subscriptionStore;
     _pushClient        = pushClient;
 }
 public LiteDatabasePushSubscriptionStoreAccessorProvider(IPushSubscriptionStore pushSubscriptionStore)
 {
     _pushSubscriptionStore = pushSubscriptionStore;
 }
예제 #18
0
 public SqlitePushSubscriptionStoreAccessor(IServiceScope serviceScope)
 {
     _serviceScope         = serviceScope;
     PushSubscriptionStore = _serviceScope.ServiceProvider.GetService <IPushSubscriptionStore>();
 }
 public AllSubscribersPushNotificationRecipientProvider(
     IPushSubscriptionStore pushSubscriptionStore
     )
 {
     _pushSubscriptionStore = pushSubscriptionStore;
 }
예제 #20
0
 public PushNotificationsApiController(IPushSubscriptionStore subscriptionStore, IPushNotificationService notificationService)
 {
     _subscriptionStore   = subscriptionStore;
     _notificationService = notificationService;
 }
 public AllButCurrentUserPushNotificationRecipientProvider(IPushSubscriptionStore pushSubscriptionStore)
 {
     _pushSubscriptionStore = pushSubscriptionStore;
 }
예제 #22
0
 public SqlitePushSubscriptionStoreAccessor(IPushSubscriptionStore pushSubscriptionStore)
 {
     PushSubscriptionStore = pushSubscriptionStore;
 }
예제 #23
0
 public SingleUserPushNotificationRecipientProvider(
     IPushSubscriptionStore pushSubscriptionStore
     )
 {
     _pushSubscriptionStore = pushSubscriptionStore;
 }
예제 #24
0
 public LiteDatabasePushSubscriptionStoreAccessor(IPushSubscriptionStore pushSubscriptionStore)
 {
     PushSubscriptionStore = pushSubscriptionStore;
 }
예제 #25
0
 public CosmosDbPushSubscriptionStoreAccessorProvider(IPushSubscriptionStore pushSubscriptionStore)
 {
     _pushSubscriptionStore = pushSubscriptionStore;
 }