From 661b559d46a1631fc19d675c1a0073a87e1fb1e8 Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Thu, 4 Apr 2024 15:33:53 +0200
Subject: [PATCH] fix: url param handling

---
 app/lib/server_requests/fetch_markers.dart  | 4 +++-
 app/lib/server_requests/fetch_relation.dart | 6 +++++-
 server/main.py                              | 6 ++++--
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/app/lib/server_requests/fetch_markers.dart b/app/lib/server_requests/fetch_markers.dart
index 410a25df..cd67bc7b 100644
--- a/app/lib/server_requests/fetch_markers.dart
+++ b/app/lib/server_requests/fetch_markers.dart
@@ -23,7 +23,9 @@ Future<FetchResult> fetchMeasurements() async {
           (X509Certificate cert, String host, int port) => true;
 
     // Request markers from server
-    var request = await client.getUrl(Uri.parse(serverURI + mapEndpoint));
+    var parameterValue = 'Mjosa'; // NB temp hardcoded, should use selectedLake directly in url param
+    var request = await client.getUrl(Uri.parse('$serverURI$mapEndpoint?lake='
+        '${Uri.encodeComponent(parameterValue)}'));
     var response = await request.close(); // Close response body at end of function
 
     // Parse body to JSON if request is ok
diff --git a/app/lib/server_requests/fetch_relation.dart b/app/lib/server_requests/fetch_relation.dart
index ab77dcec..88e1ca20 100644
--- a/app/lib/server_requests/fetch_relation.dart
+++ b/app/lib/server_requests/fetch_relation.dart
@@ -15,7 +15,11 @@ Future<Uint8List> fetchRelation() async {
           (X509Certificate cert, String host, int port) => true;
 
     // Execute request to to get_relation endpoint
-    var request = await client.getUrl(Uri.parse('${serverURI}get_relation'));
+    var parameterValue = 'Mjosa';  // NB temp hardcoded, should use selectedLake directly in url param
+    //var request = await client.getUrl(Uri.parse('${serverURI}get_relation'));
+    var request = await client.getUrl(Uri.parse('${serverURI}get_relation?lake='
+        '${Uri.encodeComponent(parameterValue)}'));
+
     var response = await request.close(); // Close response body at end of function
 
     // Try to parse body to JSON if request is ok
diff --git a/server/main.py b/server/main.py
index ac2a8e28..f730b9e9 100644
--- a/server/main.py
+++ b/server/main.py
@@ -24,11 +24,13 @@ class IceHTTPServer(HTTPServer):
 
 # Custom HTTP class
 class IceHTTP(BaseHTTPRequestHandler):
+
     def __init__(self, request, client_address, server):
         self.cursor = server.cursor
         super().__init__(request, client_address, server)
 
     def do_GET(self):
+
         # Root path
         if self.path == '/':  # NB: temporary root path behavior
             self.send_response(200)
@@ -37,12 +39,12 @@ class IceHTTP(BaseHTTPRequestHandler):
 
             self.wfile.write(b"Root path hit!")
 
-        elif self.path == '/update_map':  # NB: should be POST?
+        elif self.path.startswith('/update_map'):  # NB: should be POST?
             parsed_path = urlparse(self.path)
             query_params = parse_qs(parsed_path.query)
             get_all_markers(self, self.cursor, 'mjosa')  # Get all markers
             # NB: temporary hardcoded waterBodyName
-        elif self.path == '/get_relation':
+        elif self.path.startswith('/get_relation'):
             parsed_path = urlparse(self.path)
             query_params = parse_qs(parsed_path.query)
             fetch_divided_map(self, 'Mjosa')  # NB temp hardcoded value
-- 
GitLab