Skip to content
Snippets Groups Projects
Commit 546cec09 authored by Maximilian Betz's avatar Maximilian Betz
Browse files

updated gathering token on each sync

parent 3fa6b83c
No related branches found
No related tags found
No related merge requests found
......@@ -57,4 +57,5 @@ a-z , A-Z , _ , 0-9 , ,(Comma) , ( , ) , + , - , . , :
## TODOs
- FlutterSecureStorage for user password?
......@@ -29,6 +29,7 @@ Future<int> login() async {
debugPrint('Login success');
//TODO: display feedback to user that credentials are correct
debugPrint(response.headers['set-cookie']?.split(';')[0].toString());
debugPrint(response.body.toString());
debugPrint(response.headers.toString());
debugPrint(response.headers['set-cookie']);
......
......@@ -15,60 +15,103 @@ 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();
String baseUrl = 'https://sandbox.sensor.awi.de/rest/sensors/events/putEvent/';
String url = '';
_synccounter = events.getPendingEventCount();
debugPrint('Number of Events: ' + events.events.length.toString());
debugPrint('Number of Pending Events: ' + _synccounter.toString());
var index = 0;
for (var event in events.events){
if (event.status == 'PENDING') {
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": "x-auth-token=72d9d4d20a33f87edca7e1ba01ce8db8"
},
body: event.toSensorJson().toString(),
encoding: Encoding.getByName("utf-8"),
);
if (response.statusCode == 201) {
_synccounter--;
debugPrint('put success, remaining events: ' +_synccounter.toString());
event.status = 'EXPORTED'; //Update event status so that it is only exported once.
if (token != null) {
String baseUrl = 'https://sandbox.sensor.awi.de/rest/sensors/events/putEvent/';
String url = '';
//if(mounted){
// setState(() { //refresh the UI
// });}
_synccounter = events.getPendingEventCount();
debugPrint('Number of Events: ' + events.events.length.toString());
debugPrint('Number of Pending Events: ' + _synccounter.toString());
var index = 0;
for (var event in events.events) {
if (event.status == 'PENDING') {
debugPrint('Idx: ' + index.toString() + ' ' +
event.toSensorJson().toString());
index++;
setState(() {
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) {
_synccounter--;
debugPrint(
'put success, remaining events: ' + _synccounter.toString());
event.status =
'EXPORTED'; //Update event status so that it is only exported once.
});
debugPrint(response.body.toString());
debugPrint(response.headers.toString());
debugPrint(response.headers['set-cookie']);
setState(() {});
} else {
debugPrint('Header: ' + response.headers.toString());
debugPrint('Body: ' + response.body.toString());
debugPrint('StatusCode: ' + response.statusCode.toString());
throw Exception('Failed to put.');
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.');
}
}
}
return true;
}
return true;
return false;
}
@override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment