diff --git a/app/lib/server_requests/init_state.dart b/app/lib/server_requests/init_state.dart index b083b4632979d773136c124621e611b11a3ac9ea..d6b873e9e962d82220b8698c4caafde4abc8b8d6 100644 --- a/app/lib/server_requests/init_state.dart +++ b/app/lib/server_requests/init_state.dart @@ -1,4 +1,6 @@ +import 'dart:io'; import 'dart:async'; +import 'dart:convert'; import 'dart:typed_data'; import 'package:app/consts.dart'; @@ -6,6 +8,7 @@ import '../data_classes.dart'; import '../server_requests/fetch_markers.dart'; import '../server_requests/fetch_relation.dart'; + Future<void> initialiseState() async{ bool serverConnection = true; @@ -33,4 +36,32 @@ Future<void> initialiseState() async{ selectedRelation = await relationFuture; selectedMarkerList = await markerListFuture; +} + +/// fetchAllLakeNames fetches a list of all lake names in the system +/// and initialises lakeSearchOptions +Future<void> fetchAllLakeNames() async { + try { + HttpClient client = HttpClient() + ..badCertificateCallback = // NB: temporary disable SSL certificate validation + (X509Certificate cert, String host, int port) => true; + + var request = await client.getUrl(Uri.parse('${serverURI}/get_lake_names')); + var response = await request.close(); + + if (response.statusCode == 200) { + var responseBody = await response.transform(utf8.decoder).join(); + + if (responseBody.isNotEmpty) { + var jsonData = json.decode(responseBody); + + if (jsonData != null && jsonData is List) { + lakeSearchOptions = jsonData.map<String>((item) => item.toString()).toList(); + return; + } + } + } + } catch (e) { + lakeSearchOptions = ["Mjøsa"]; // Init default list + } } \ No newline at end of file diff --git a/server/main.py b/server/main.py index 820e58ac554b42d2174796d2ebde77c3f201b4ff..2232bc36504cec3b8e5ef809ecb7b472a4f43e8d 100644 --- a/server/main.py +++ b/server/main.py @@ -43,13 +43,14 @@ class IceHTTP(BaseHTTPRequestHandler): with open('server/map_handler/lake_relations/all_lake_names.json', 'r') as file: lake_names = json.load(file) + # Disable ensure_ascii to keep 'ø' json_data = json.dumps(lake_names, ensure_ascii=False) self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() - self.wfile.write(json_data.encode('iso-8859-1')) + self.wfile.write(json_data.encode('iso-8859-1')) # Special character encoding elif self.path.startswith('/update_map'): # NB: should be POST? parsed_path = urlparse(self.path) query_params = parse_qs(parsed_path.query)