Exemple #1
0
        public async Task <FavoriteStation> GetFavoriteStation(string stationName)
        {
            var stations = await _bikeShareClient.GetStationsAsync();

            StationIdentity    stationIdentifier;
            StationCoordinates stationCoordinates;

            try
            {
                stationIdentifier = new StationIdentity(
                    stations.First(s => s.Name.ToLower().Equals(stationName.ToLower())).Name,
                    stations.First(s => s.Name.ToLower().Equals(stationName.ToLower())).Id
                    );
                stationCoordinates = new StationCoordinates
                {
                    Latitude  = stations.First(s => s.Name.ToLower().Equals(stationName.ToLower())).Latitude,
                    Longitude = stations.First(s => s.Name.ToLower().Equals(stationName.ToLower())).Longitude
                };
            }
            catch (InvalidOperationException noElementException)
            {
                if (!stationName.Equals(_defaultStationName))
                {
                    return(await GetFavoriteStation(_defaultStationName));
                }
                var bikeSystemInfo = await _bikeShareClient.GetSystemInformationAsync();

                throw new ArgumentException($"Can't find {_defaultStationName} station in bikeshare-provider {bikeSystemInfo.Name} ({bikeSystemInfo.OperatorName})");
            }
            var stationsStatuses = await _bikeShareClient.GetStationsStatusAsync();

            var stationStatus = stationsStatuses.First(s => s.Id.Equals(stationIdentifier.Id));

            return(new FavoriteStation(stationIdentifier.Name, stationStatus.BikesAvailable, stationStatus.DocksAvailable, stationCoordinates));
        }
 public WeatherServiceHealthCheck(IWeatherService weatherService)
 {
     _weatherService      = weatherService;
     _testableCoordinates = new StationCoordinates {
         Latitude = _latitude, Longitude = _longitude
     };
 }
Exemple #3
0
        public StationCoordinates GetExtAllStations()
        {
            RCWindsWCFService.Service1Client client = new RCWindsWCFService.Service1Client();
            StationCoordinates coordinates          = new StationCoordinates();
            IEnumerable <RCWindsWCFService.uspGetAllStationsResult> results = client.GetExtAllStations();

            coordinates.Station_Coordinates = results;
            return(coordinates);
        }
        public async Task <WeatherForecastReport> GetDailyForeCastAsync(StationCoordinates coordinates)
        {
            var forcastReport = await _memoryCache.GetOrCreateAsync((coordinates.Latitude, coordinates.Longitude).GetHashCode(), async report =>
            {
                report.SetAbsoluteExpiration(TimeSpan.FromMinutes(CachedMinutes));
                return(await _weatherService.GetDailyForeCastAsync(coordinates));
            });

            return(forcastReport);
        }
Exemple #5
0
        public async Task GetDailyForeCastAsync_GivenStationCoordinates_ReturnsWeatherForcast()
        {
            var cut             = CreateClassUnderTest();
            var testCoordinates = new StationCoordinates {
                Latitude = 100, Longitude = 200
            };

            var weatherForcast = await cut.GetDailyForeCastAsync(testCoordinates);

            Assert.Equal(2.0, weatherForcast.Forecasts.FirstOrDefault().Precipitation.Value);
        }
Exemple #6
0
        public async Task GetDailyForeCastAsync_GivenSameStationCoordinates_ReturnsSameInstance()
        {
            var cut             = CreateClassUnderTest();
            var testCoordinates = new StationCoordinates {
                Latitude = 100, Longitude = 200
            };

            var weatherForcast1 = await cut.GetDailyForeCastAsync(testCoordinates);

            var weatherForcast2 = await cut.GetDailyForeCastAsync(testCoordinates);

            Assert.Same(weatherForcast1, weatherForcast2);
        }
Exemple #7
0
        public async Task <WeatherForecastReport> GetDailyForeCastAsync(StationCoordinates coordinates)
        {
            var response = await _httpClient.GetAsync($"?lat={coordinates.Latitude}" +
                                                      $"&lon={coordinates.Longitude}" +
                                                      $"&APPID={_weatherServiceAPIKey}" +
                                                      $"&units={_tempUnit}" +
                                                      $"&cnt={_numberOfForecastRecords}");

            if (!response.IsSuccessStatusCode)
            {
                throw new NotImplementedException($"Could not find any weather data, {ApiBaseAddress} returned status code {response.StatusCode}");
            }
            var content = await response.Content.ReadAsStringAsync();

            return(CreateWeatherForecastReport(JsonConvert.DeserializeObject <WeatherReportDTO>(content)));
        }
Exemple #8
0
        public async Task <WeatherForecastReport> GetDailyForeCastAsync(StationCoordinates coordinates)
        {
            var weatherForcastReport = new WeatherForecastReport(
                new[]
                { new WeatherForecast(
                      new Precipitation(2.0, PrecipitationType.Rain),
                      new Temperature(2, 5, 2),
                      new Wind(10),
                      "Light Rain",
                      "Boring weather",
                      new DateTime(1979, 07, 28, 22, 35, 5,
                                   DateTimeKind.Utc)),

                  new WeatherForecast(
                      new Precipitation(2.0, PrecipitationType.Snow),
                      new Temperature(2, 5, 2),
                      new Wind(10),
                      "Light Snow",
                      "Snowy weather",
                      new DateTime(1979, 07, 28, 22, 40, 5,
                                   DateTimeKind.Utc)) });

            return(await Task.FromResult(weatherForcastReport));
        }