示例#1
0
        public static async Task <ObservationsResponse> GetObservationsAsync(double latitude, double longitude, UserCredentials credentials, DateTime?startDate, DateTime?endDate)
        {
            var token = await GetToken(credentials);

            if (startDate > endDate)
            {
                startDate = endDate;
            }
            var start = startDate?.ToString("yyyy-MM-dd");
            var end   = endDate?.ToString("yyyy-MM-dd");
            var dates = (start != null && end != null) ? $"{start},{end}" : "";
            var url   = $"{ApiURL}{latitude.ToString(CultureInfo.InvariantCulture)},{longitude.ToString(CultureInfo.InvariantCulture)}/observations/{dates}";
            ObservationsResponse observationsResponse = null;

            try
            {
                observationsResponse = await url.WithOAuthBearerToken(token).GetJsonAsync <ObservationsResponse>();
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
            }
            var observations = observationsResponse;

            while (observationsResponse.Links.Next != null)
            {
                var offsetParams = observationsResponse.Links.Next.Href.Split('?')[1];
                var pageUrl      = $"{url}?{offsetParams}";
                observationsResponse = await pageUrl.WithOAuthBearerToken(token).GetJsonAsync <ObservationsResponse>();

                observations.Observations.AddRange(observationsResponse.Observations);
            }

            return(observations);
        }
示例#2
0
        public static List <WeatherHistory> GetHistoryFromApiResponse(ObservationsResponse historyResponse)
        {
            var history = new List <WeatherHistory>();

            if (historyResponse == null)
            {
                return(history);
            }
            foreach (var observation in historyResponse.Observations)
            {
                history.Add(GetHistoryItemFromApiResponse(observation));
            }
            return(history);
        }