request method

  1. @override
Future request(
  1. String url, {
  2. dynamic data,
  3. Session? session,
})
override

Implementation

@override
Future request(String url, {data, Session? session}) async {
  //  restaurando session
  if (url == '/session/restore') {
    token = await LocalStorage.get('d56b699830e77ba53855679cb1d252da') ?? '';
    if (token.isNotEmpty) this.session.loadFromToken(token: token, key: key);
    await request('/sistema/login/session');
    return {'logged': this.session.isLogged};
  }

  //  borrando session
  else if (url == '/session/release') {
    await LocalStorage.remove('d56b699830e77ba53855679cb1d252da');
    this.session.resetTo();
    this.session.trigger('release');
    return {'release': 'ok'};
  }

  //  realiza la conulta
  var headers = {
    'Content-type': 'application/json',
    'Accept': 'application/json'
  };

  if (token.isNotEmpty) headers['Authorization'] = 'Bearer $token';

  if (data != null) {
    for (var key in data.keys) {
      if (data[key].runtimeType.toString() == 'DateTime') {
        data[key] = (data[key] as DateTime).toIso8601String();
      }
    }
  }
  var response = await http.post(Uri.parse(this.url + url),
      body: util.jsonToString(data), headers: headers);

  //  verifica si salio todo bien
  if (response.statusCode != 200) {
    throw Exception(response.body);
  }

  dynamic result = response.body;

  //  si se esta recibiendo un json
  if (response.headers['content-type'].toString() ==
      io.ContentType.json.toString()) {
    result = jsonDecode(result);
  }

  if (url == '/sistema/login/access' || url == '/sistema/login/session') {
    this.session.loadFromToken(token: result['token'], key: key);
    token = result['token'];
    await LocalStorage.setTo('d56b699830e77ba53855679cb1d252da', token);
  }

  return result;
}