obtainWeatherData method

Future<CurrentWeatherData> obtainWeatherData({
  1. required String jwt,
  2. required String language,
  3. required double latitude,
  4. required double longitude,
  5. required DataSet dataSets,
  6. required String timezone,
  7. String? countryCode,
  8. DateTime? currentAsOf,
  9. DateTime? dailyEnd,
  10. DateTime? dailyStart,
  11. DateTime? hourlyEnd,
  12. DateTime? hourlyStart,
})

Obtain weather data for the specified location.

Implementation

Future<CurrentWeatherData> obtainWeatherData({
  required String jwt,
  required String language,
  required double latitude,
  required double longitude,
  required DataSet dataSets,
  required String timezone,
  String? countryCode,
  DateTime? currentAsOf,
  DateTime? dailyEnd,
  DateTime? dailyStart,
  DateTime? hourlyEnd,
  DateTime? hourlyStart,
}) async {
  assert(latitude >= -90 || latitude <= 90);
  assert(latitude >= -180 || latitude <= 180);
  String url =
      "$baseUrl/weather/$language/$latitude/$longitude?dataSets=${dataSets.name}&timezone=$timezone";

  if (countryCode != null) {
    url = '$url&countryCode=$countryCode';
  }
  if (currentAsOf != null) {
    url = '$url&currentAsOf=${currentAsOf.toIso8601String()}Z';
  }
  if (dailyEnd != null) {
    url = '$url&dailyEnd=${dailyEnd.toIso8601String()}Z';
  }
  if (dailyStart != null) {
    url = '$url&dailyStart=${dailyStart.toIso8601String()}Z';
  }
  if (hourlyEnd != null) {
    url = '$url&hourlyEnd=${hourlyEnd.toIso8601String()}Z';
  }
  if (hourlyStart != null) {
    url = '$url&hourlyStart=${hourlyStart.toIso8601String()}Z';
  }

  final response = await http.get(
    Uri.parse(url),
    headers: {HttpHeaders.authorizationHeader: jwt},
  );
  return CurrentWeatherData.fromJson(response.body);
}