Example #1
0
        /// <summary>
        /// Syncs data at an interval defined by SYNC_INTERVAL_MINUTES.
        /// </summary>
        /// <param name="refreshToken">The initial token to be used for refreshing access tokens.</param>
        private async void SyncData(string refreshToken)
        {
            Logger.LogInformation("Started data sync");
            if (refreshToken != null)
            {
                Logger.LogInformation($"Setting initial refresh token {refreshToken}");
                _dataStorageService.ClearTokens();
                _dataStorageService.SetRefreshToken(refreshToken);
            }

            // initial sync
            var result = await SyncBBData().ConfigureAwait(false);

            if (result.Contains(false))
            {
                return;
            }

            // Sync every SYNC_INTERVAL_MINUTES
            var timer = new System.Timers.Timer();

            timer.Interval += SYNC_INTERVAL_MINUTES * 60 * 1000;
            timer.Elapsed  += async(sender, args) =>
            {
                var result = await SyncBBData().ConfigureAwait(false);

                if (result.Contains(false))
                {
                    // at least one data sync task failed, stop processing
                    timer.Stop();
                }
            };

            timer.Start();
            Console.ReadLine(); // exit when input read from console
        }