public async void Extract(object info)
        {
            DineSafeData dineSafeData = null;

            using (var cts = new CancellationTokenSource(_httpRequestTimeOut))
            {
                if (await IsDineSafeOutdatedAsync(cts.Token))
                {
                    using (_logger.BeginScope($"DineSafe update found on {DateTime.Now}"))
                    {
                        dineSafeData = await DownloadDineSafeDataAsync(cts.Token);
                    }
                }
                else
                {
                    _logger.LogInformation($"No update at this time. {DateTime.Now}");
                }
            }

            if (dineSafeData != null)
            {
                await PersistDineSafeDataAsync(dineSafeData);
            }
            else
            {
                _logger.LogInformation("No DineSafe Data to process");
            }
        }
        private async Task PersistDineSafeDataAsync(DineSafeData dineSafeData)
        {
            using var databaseCts = new CancellationTokenSource(_databaseOperationTimeOut);

            using (_logger.BeginScope("Begin DineSafe Data Collection"))
            {
                if (dineSafeData.Establishments != null)
                {
                    foreach (var dineSafeEstablishment in dineSafeData.Establishments)
                    {
                        _logger.LogInformation($"Started processing establishment: {dineSafeEstablishment.Name} - {dineSafeEstablishment.Id}");

                        var establishment = CreateEstablishment(dineSafeEstablishment);

                        var storedEstablishment =
                            await _establishmentRepository.AddIfNotExistsAsync(establishment, databaseCts.Token);

                        storedEstablishment.AddNewInspections(ExtractInspections(dineSafeEstablishment));

                        await _establishmentRepository.UnitOfWork.SaveEntitiesAsync(databaseCts.Token);

                        _logger.LogInformation($"Finished processing establishment: {establishment.Name}");
                    }
                }
            }
        }
        public Task <DineSafeData> GetEstablishmentsAsync(Uri resourceUri, CancellationToken cancellationToken)
        {
            var dineSafeData = new DineSafeData
            {
                Establishments = new[]
                {
                    new DineSafeEstablishment
                    {
                        Name      = "fakeName",
                        Status    = "Pass",
                        Address   = "Some Address",
                        Id        = 1,
                        Type      = "O+",
                        Longitude = "0001",
                        Latitude  = "0001"
                    }
                }
            };

            return(Task.FromResult(dineSafeData));
        }