handshake method
Implementation
Future<Uint8List> handshake(String server, Uint8List katamari) async {
if (_handshaked && dartSessionId.isNotEmpty && katamari.isNotEmpty) {
return refresh(server, katamari);
}
uri = server;
var url = Uri.parse(server + '?bin=true');
//var response =
// await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
var response;
try {
if (dartSessionId.isNotEmpty) {
response = await http.get(url, headers: {
'Cookie': 'DARTSESSID=' + dartSessionId
}).timeout(_timoutIn);
} else {
response = await http.get(url);
}
} catch (e) {
if (!(e is TimeoutException)) setOffline();
return Uint8List(0);
}
if (response == null) return Uint8List(0);
//data is flowing, we are good
setOnline();
if (response.statusCode != 200) {
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);
_handshaked = true;
} else {
print('cookie header missing!!');
}
String? hw = response.headers["xxwants"];
if (hw != null) {
xxWantsList = base64Decode(hw);
} else {
//empty list
xxWantsList = Uint8List(0);
}
print('dartSessionID' + dartSessionId);
print(response.contentLength);
return response.bodyBytes;
}