Files
floodwatch/lib/services/api.dart

39 lines
1.2 KiB
Dart

import 'package:http/http.dart' as http;
import 'dart:convert';
import '../model/flood_station.dart';
import '../model/reading.dart';
class Api {
static const String _rootUrl =
'https://environment.data.gov.uk/flood-monitoring';
static Future<List<FloodStation>> fetchStations() async {
List<FloodStation> stations = [];
final response = await http.get(Uri.parse('$_rootUrl/id/stations'));
if (response.statusCode == 200) {
final Map<String, dynamic> jsonStr = jsonDecode(response.body);
for (final str in jsonStr['items']) {
stations.add(FloodStation.fromMap(str));
}
}
return stations;
}
static Future<List<Reading>> fetchReadingsFromStation(
String stationId) async {
List<Reading> readings = [];
final dateTime = DateTime.now().subtract(Duration(days: 1));
final url =
'$_rootUrl/id/stations/$stationId/readings?since=${dateTime.toIso8601String()}Z&_sorted';
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
final Map<String, dynamic> jsonStr = jsonDecode(response.body);
for (final str in jsonStr['items']) {
readings.add(Reading.fromMap(str));
}
}
return readings.reversed.toList();
}
}