refresh method

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

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