handshake method

Future<Uint8List> handshake(
  1. String server,
  2. Uint8List katamari
)

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;
}