private string BuildRequestUri()
        {
            var builder = new StringBuilder();

            builder.Append("json?{0}={1}");

            builder.AppendFormat("&key={0}", ApiKey?.Decrypt());

            builder.AppendFormat("&language={0}", GetValidLanguage(LanguageCode));

            if (!string.IsNullOrEmpty(RegionBias))
            {
                builder.AppendFormat("&region={0}", RegionBias);
            }

            if (BoundsBias != null)
            {
                builder.AppendFormat("&bounds={0},{1}|{2},{3}", BoundsBias.SouthWest?.Latitude,
                                     BoundsBias.SouthWest?.Longitude, BoundsBias.NorthEast?.Latitude, BoundsBias.NorthEast?.Longitude);
            }

            if (ComponentFilters != null)
            {
                builder.AppendFormat("&components={0}",
                                     string.Join("|", ComponentFilters.Select(x => x.ComponentFilter)));
            }

            return(builder.ToString());
        }
        private string BuildRequestUrl(string urlparams)
        {
            var unit = OptionalParameters?.MeasurementUnits;

            _weatherProviderUnits = string.IsNullOrEmpty(unit)
                ? WeatherProviderUnits.Metric
                : (WeatherProviderUnits)Enum.Parse(typeof(WeatherProviderUnits), unit, true);
            var urlbase = string.Format("{0}?appid={1}", _weatherDataType.ToValue(), ApiKey?.Decrypt());
            var lang    = GetValidLanguage(OptionalParameters?.LanguageCode);
            var result  = string.Format("{0}&{1}&units={2}&lang={3}", urlbase, urlparams,
                                        _weatherProviderUnits.ToValue(),
                                        lang);

            return(result);
        }
Example #3
0
        protected override string BuildRequestUri(double latitude, double longitude)
        {
            Latitude  = latitude;
            Longitude = longitude;

            var queryString =
                new StringBuilder(string.Format(FormatProvider, "forecast/{0}/{1:N4},{2:N4}", ApiKey?.Decrypt(),
                                                latitude,
                                                longitude));

            if (OptionalParameters?.UnixTimeInSeconds != null)
            {
                queryString.AppendFormat(",{0}", OptionalParameters.UnixTimeInSeconds);
            }

            if (OptionalParameters != null)
            {
                queryString.Append("?");
            }

            if (OptionalParameters?.DataBlocksToExclude != null && OptionalParameters.DataBlocksToExclude.Count > 0)
            {
                queryString.AppendFormat("&exclude={0}", string.Join(",", OptionalParameters.DataBlocksToExclude));
            }

            if (OptionalParameters?.ExtendHourly != null && OptionalParameters.ExtendHourly.Value)
            {
                queryString.Append("&extend=hourly");
            }

            var languageCode = GetValidLanguage(OptionalParameters?.LanguageCode);

            queryString.AppendFormat("&lang={0}", languageCode);

            var unit = OptionalParameters?.MeasurementUnits;

            _weatherProviderUnits = string.IsNullOrEmpty(unit)
                ? WeatherProviderUnits.Si
                : (WeatherProviderUnits)Enum.Parse(typeof(WeatherProviderUnits), unit, true);
            queryString.AppendFormat("&units={0}", _weatherProviderUnits.ToValue());

            return(queryString.ToString());
        }