Пример #1
0
        public virtual async Task <(string[], List <CurrentWeatherResponse>, List <Location>)> GetApiResponsesAsync()
        {
            var stopWatch = new Stopwatch();

            stopWatch.Start();

            var apiResponses  = new List <CurrentWeatherResponse>();
            var locations     = new Dictionary <long, Location>();
            var filesToImport = DirectoryUtil.GetAllUnprocessedFiles(_dataDirectory);

            foreach (var file in filesToImport)
            {
                var contents = await File.ReadAllTextAsync(file);

                var apiResponse = JsonSerializer.Deserialize <CurrentWeatherResponse>(contents);
                apiResponses.Add(apiResponse);
                var location = _autoMapping.Map <City, Location>(apiResponse.City);
                if (!locations.ContainsKey(location.Id))
                {
                    locations.Add(location.Id, location);
                }
            }

            stopWatch.Stop();
            Console.WriteLine(
                $"Loaded {apiResponses.Count} unprocessed files in {stopWatch.Elapsed.TotalMilliseconds}ms");
            return(filesToImport, apiResponses, locations.Values.ToList());
        }