Ejemplo n.º 1
0
        public async Task WriteAsync(ServiceProviderWeatherResponse weatherResponse, double executionTime)
        {
            string folderPath = string.IsNullOrEmpty(_fileSettings.FolderPath) || !Directory.Exists(_fileSettings.FolderPath)
                ? Directory.GetCurrentDirectory()
                : _fileSettings.FolderPath;
            string fileName = string.IsNullOrEmpty(_fileSettings.FileName)
                ? DefaultFileName
                : _fileSettings.FileName;

            string fullPath = Path.Combine(folderPath, fileName);

            await using (StreamWriter streamWriter =
                             new StreamWriter(fullPath, true))
            {
                string data = JsonSerializer.Serialize(weatherResponse);

                await streamWriter.WriteLineAsync("Total Execution Time: " + executionTime + ", Data: " + data);
            }
        }
Ejemplo n.º 2
0
        public async Task ProcessWeatherForecastAsync(string city)
        {
            CancellationTokenSource cancelTokenSource = new CancellationTokenSource();

            IServiceProviderClient openWeatherMapClient = _serviceProviderClientFactory.CreateServiceProviderClient(ServiceProviderCode.OpenWeatherMap);
            IServiceProviderClient weatherBitClient     = _serviceProviderClientFactory.CreateServiceProviderClient(ServiceProviderCode.WeatherBit);

            Stopwatch timer    = Stopwatch.StartNew();
            var       taskList = new List <Task <ServiceProviderWeatherResponse> >
            {
                weatherBitClient.GetCurrentWeatherForecastAsync(city, cancelTokenSource.Token),
                openWeatherMapClient.GetCurrentWeatherForecastAsync(city, cancelTokenSource.Token)
            };

            Task <ServiceProviderWeatherResponse> finishedTask = await Task.WhenAny(taskList);

            ServiceProviderWeatherResponse serviceResponse = await finishedTask;

            timer.Stop();

            await _writer.WriteAsync(serviceResponse, timer.Elapsed.TotalSeconds);
        }