diff --git a/lib/sensorconnector.dart b/lib/sensorconnector.dart index eb6e942d3eef05bbfbcefd07d3d5d639da887d97..41fb7d70080a02d9f2df9e0d7c7301c901864903 100644 --- a/lib/sensorconnector.dart +++ b/lib/sensorconnector.dart @@ -114,7 +114,6 @@ class SensorConnector { encoding: Encoding.getByName("utf-8"), ); if (response.statusCode == 201) { - event.status = 'EXPORTED'; //Update the event status so that it is only exported once. return true; } else { throw Exception('Failed to put event. ' diff --git a/lib/viewevents.dart b/lib/viewevents.dart index 748f775d94bad668035da3959edd5642e085b275..23369ae689b3cb3eaee0c6888144142a2c5c07d7 100644 --- a/lib/viewevents.dart +++ b/lib/viewevents.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'datamodel.dart'; import 'package:http/http.dart' as http; +import 'sensorconnector.dart'; class ViewEvents extends StatefulWidget { const ViewEvents({Key? key}) : super(key: key); @@ -13,58 +14,15 @@ class ViewEvents extends StatefulWidget { class _ViewEvents extends State<ViewEvents> { int _synccounter = 0; //For displaying progress during event upload - Future<String?> login() async { - String? token; - ConfigurationStoreInstance configuration = ConfigurationStoreInstance(); - - String url = 'https://sandbox.sensor.awi.de/rest/sensors/contacts/login'; - debugPrint("Start login to : " + url); - - Map<String, dynamic> body = {'username': configuration.loginInformation.mail, 'authPassword': configuration.loginInformation.password}; - String encodedBody = body.keys.map((key) => "$key=${body[key]}").join("&"); - debugPrint(encodedBody); - - final response = await http.post(Uri.parse(url), - body: encodedBody, - headers: { - 'Accept' : 'application/json', - 'Content-Type' : 'application/x-www-form-urlencoded' - }, - encoding: Encoding.getByName("utf-8") - ); - - if (response.statusCode == 200) { - debugPrint('Login success'); - //TODO: display feedback to user that credentials are correct - - token = response.headers['set-cookie']?.split(';')[0]; - - debugPrint("Token:" + token!); - debugPrint(response.body.toString()); - debugPrint(response.headers.toString()); - debugPrint(response.headers['set-cookie']); - - - } else { - debugPrint('Header: ' + response.headers.toString()); - debugPrint('Body: ' + response.body.toString()); - debugPrint('StatusCode: ' + response.statusCode.toString()); - throw Exception('Failed to login'); - - - } - return token; - } - Future<bool> syncEvents() async { final EventStoreInstance events = EventStoreInstance(); final ConfigurationStoreInstance configuration = ConfigurationStoreInstance(); - String? token = await login(); + SensorConnector connection = SensorConnector(); - if (token != null) { - String baseUrl = 'https://sandbox.sensor.awi.de/rest/sensors/events/putEvent/'; - String url = ''; + String? token = await connection.getAuthToken(configuration.loginInformation.mail, + configuration.loginInformation.password); + if (token != null) { _synccounter = events.getPendingEventCount(); debugPrint('Number of Events: ' + events.events.length.toString()); debugPrint('Number of Pending Events: ' + _synccounter.toString()); @@ -74,37 +32,13 @@ class _ViewEvents extends State<ViewEvents> { debugPrint('Idx: ' + index.toString() + ' ' + event.toSensorJson().toString()); index++; - - url = baseUrl + event.id.toString() + '?createVersion=false'; - debugPrint('XXX ' + Uri.parse(url).toString()); - final response = await http.put(Uri.parse(url), - headers: { - "Content-Type": "application/json", - "Cookie": token - }, - body: event.toSensorJson().toString(), - encoding: Encoding.getByName("utf-8"), - ); - - if (response.statusCode == 201) { + if (await connection.putEvent(event, token) == true){ + //Event has been posted to Sensor. _synccounter--; - debugPrint( - 'put success, remaining events: ' + _synccounter.toString()); - event.status = - 'EXPORTED'; //Update event status so that it is only exported once. - - - setState(() {}); - - debugPrint(response.body.toString()); - debugPrint(response.headers.toString()); - debugPrint(response.headers['set-cookie']); - } else { - debugPrint('Header: ' + response.headers.toString()); - debugPrint('Body: ' + response.body.toString()); - debugPrint('StatusCode: ' + response.statusCode.toString()); - throw Exception('Failed to put.'); + debugPrint('put success, remaining events: ' + _synccounter.toString()); + event.status = 'EXPORTED'; //Update event status so that it is only exported once. } + setState(() {}); } } return true;