コード例 #1
0
        protected override async Task OnInitializedAsync()
        {
            var tokenResult = await AuthenticationService.RequestAccessToken();

            if (tokenResult.TryGetToken(out var token))
            {
                using (var httpClient = new HttpClient())
                {
                    try
                    {
                        httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.Value}");
                        var weatherForecastApiClient = new WeatherForecastApiClient(Navigation.BaseUri, httpClient);
                        forecasts = await weatherForecastApiClient.WeatherForecastAsync();
                    }
                    catch (ApiException exception)
                    {
                        error = exception.Message;
                    }
                }
            }
            else
            {
                Navigation.NavigateTo(tokenResult.RedirectUrl);
            }
        }
コード例 #2
0
        public async Task Test1()
        {
            _mockProviderService
            .UponReceiving("Receber a previsão do tempo para amanhã")
            .With(new ProviderServiceRequest
            {
                Path    = "/WeatherForecast/tomorrow",
                Method  = HttpVerb.Get,
                Headers = new Dictionary <string, object>
                {
                    { "Accept", "application/json" }
                }
            })
            .WillRespondWith(new ProviderServiceResponse
            {
                Status  = 200,
                Headers = new Dictionary <string, object>
                {
                    { "Content-Type", "application/json; charset=utf-8" }
                },
                Body = new
                {
                    date         = DateTime.Today.AddDays(1),
                    summary      = "Chilly",
                    temperatureC = 15,
                    temperatureF = 58
                }
            });

            var consumer = new WeatherForecastApiClient(_mockProviderServiceBaseUri);

            // Act
            var result = await consumer.GetForecastTomorrow();

            // Assert
            result.Should().BeEquivalentTo(
                new WeatherForecastResponse
            {
                Date         = DateTime.Today.AddDays(1),
                Summary      = "Chilly",
                TemperatureC = 15,
                TemperatureF = 58
            }
                );

            _mockProviderService.VerifyInteractions();
        }
コード例 #3
0
        private async ValueTask InitData()
        {
            if (Connectivity.NetworkAccess != NetworkAccess.Internet)
            {
                CurrentState = LayoutState.Error;
            }
            else
            {
                WeatherForecastApiClient apiClient = new WeatherForecastApiClient();

                var data = await apiClient.GetCurrentForecast();

                var fiveDaysData = await apiClient.GetFiveDaysForecast();

                if (data != null)
                {
                    CurrentTemperature = ((int)data.main.temp).ToString();
                    MaxTemperature     = ((int)data.main.temp_max).ToString();
                    MinTemperature     = ((int)data.main.temp_min).ToString();
                    WeatherDescription = data.weather[0].description;
                    WeatherIcon        = GetIconByCode(data.weather[0].icon);
                    SetColorsByIcon(WeatherIcon);
                    CityName    = data.name;
                    CurrentDate = DateTime.UtcNow.AddSeconds(data.timezone);
                    if (fiveDaysData != null)
                    {
                        var fiveDayTemperatures = fiveDaysData.list.Where(x => x.dt_converted.Date > DateTime.Now && x.dt_converted.Hour == 12)
                                                  .Select(x => new DayForecastModel
                        {
                            Icon        = GetIconByCode(x.weather[0].icon),
                            NameOfDay   = x.dt_converted.DayOfWeek.ToString(),
                            Temperature = ((int)x.main.temp).ToString()
                        });
                        FiveDaysItems = new ObservableCollection <DayForecastModel>(fiveDayTemperatures);
                    }

                    CurrentState = LayoutState.Success;
                }
            }
        }