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); }
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); }