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