refresh method
Implementation
Future<Uint8List> refresh(String server, Uint8List katamari) async {
if (_isRefreshing) return Uint8List(0);
if (!_handshaked && katamari.isEmpty)
return handshake(server, Uint8List(0));
uri = server;
_isRefreshing = true;
var url = Uri.parse(uri + '/?bin=true');
//var response =
// await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
var response;
try {
response = await http.post(url, body: {
'katamari': base64Encode(katamari)
}, headers: {
'Cookie': 'DARTSESSID=' + dartSessionId
}).timeout(_timoutIn);
} catch (e) {
_isRefreshing = false;
if (!(e is TimeoutException)) setOffline();
return Uint8List(0);
}
if (response == null) {
_isRefreshing = false;
return Uint8List(0);
}
setOnline();
if (response.statusCode != 200) {
_isRefreshing = false;
return Uint8List(0);
}
print('Response status: ${response.statusCode}');
String? h = response.headers["set-cookie"];
if (h != null) {
cookie = h.split(' ').first;
String dSid = cookie.split('=').last;
dartSessionId = dSid.substring(0, dSid.length - 1);
}
print(cookie);
print(response.contentLength);
String? hw = response.headers["xxwants"];
if (hw != null) {
xxWantsList = base64Decode(hw);
} else {
//empty list
xxWantsList = Uint8List(0);
}
_isRefreshing = false;
return response.bodyBytes;
}