Exemple #1
0
            // private methods

            private static string GenerateRequestUrl(Language language, WeatherDataType dataType)
            {
                var url = "https://data.weather.gov.hk/weatherAPI/opendata/weather.php?";

                switch (language)
                {
                case Language.English:
                    url += "lang=en";
                    break;

                case Language.TraditionalChinese:
                    url += "lang=tc";
                    break;

                case Language.SimplifiedChinese:
                    url += "lang=sc";
                    break;
                }
                ;

                switch (dataType)
                {
                case WeatherDataType.LocalWeatherForecast:
                    url += "&dataType=flw";
                    break;

                case WeatherDataType.NineDaysWeather:
                    url += "&dataType=fnd";
                    break;
                }

                return(url);
            }
Exemple #2
0
        public async Task <bool> SendGenericDataUpdateByDataTypeAsync(byte[] data, WeatherDataType dataType)
        {
            if (this.AppServiceConnection == null)
            {
                await this.InitializeAsync();
            }

            var message = CreateMessage(GetCharacteristicUuidByWeatherDataType(dataType), data);

            var errorMessage = await this.AppServiceConnection.SendMessageWithResponseAsync(message);

            return(string.IsNullOrWhiteSpace(errorMessage));
        }
Exemple #3
0
            // private methods

            private static string GenerateRequestUrl(Language language, WeatherDataType dataType)
            {
                var url = "https://data.weather.gov.hk/weatherAPI/opendata/weather.php?";

                url += language switch {
                    Language.English => "lang=en",
                    Language.TraditionalChinese => "lang=tc",
                    Language.SimplifiedChinese => "lang=sc",
                    _ => "lang=en"
                };

                url += dataType switch {
                    WeatherDataType.LocalWeatherForecast => "&dataType=flw",
                    WeatherDataType.NineDaysWeather => "&dataType=fnd"
                };

                return(url);
            }
Exemple #4
0
        private async Task <IWeatherData> GetForecastDataAsync(WeatherDataType weatherDataType, string input)
        {
            var querry      = weatherDataType == WeatherDataType.CurrentWeather ? "weather" : "forecast";
            var call        = !int.TryParse(input, out int _) ? "q" : "id";
            var url         = new Uri($"http://api.openweathermap.org/data/2.5/{querry}?{call}={input}&units=Metric&appid={ApiKey}&lang=pl").ToString();
            var httpRequest = new HttpRequestMessage
            {
                Method     = new HttpMethod("GET"),
                RequestUri = new Uri(url)
            };

            try
            {
                using (HttpResponseMessage httpResponse = await HttpClient.SendAsync(httpRequest).ConfigureAwait(false))
                {
                    if (!httpResponse.IsSuccessStatusCode)
                    {
                        httpRequest.Dispose();
                        throw new HttpOperationException($"Operation returned an invalid status code '{httpResponse.StatusCode}'");
                    }
                    else
                    {
                        string responseContent = await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                        try
                        {
                            return(weatherDataType == WeatherDataType.CurrentWeather ? SafeJsonConvert.DeserializeObject <HourlyForecastTransferObject>(responseContent, new CurrentWeatherDataConverter())
                                : SafeJsonConvert.DeserializeObject <FourDaysForecastTransferObject>(responseContent, new FourDaysForecastDataConverter()) as IWeatherData);
                        }
                        catch (JsonException ex)
                        {
                            httpRequest.Dispose();
                            throw new SerializationException("Unable to deserialize the response", responseContent, ex);
                        }
                    }
                }
            }
            catch (HttpRequestException ex)
            {
                throw new TaskCanceledException("Unable to get a HTTP response message", ex);
            }
        }
Exemple #5
0
        static Guid GetCharacteristicUuidByWeatherDataType(WeatherDataType weatherDataType)
        {
            switch (weatherDataType)
            {
            case WeatherDataType.City:
                return(Asteroid.WeatherCityCharacteristicUuid);

            case WeatherDataType.IDs:
                return(Asteroid.WeatherIDsCharacteristicUuid);

            case WeatherDataType.MinTemperatures:
                return(Asteroid.WeatherMinTemperaturesCharacteristicUuid);

            case WeatherDataType.MaxTemperatures:
                return(Asteroid.WeatherMaxTemperaturesCharacteristicUuid);

            default:
                throw new NotSupportedException($"Unsupported {nameof(weatherDataType)}: {weatherDataType}");
            }
        }