sendRemotePassToDevice method
Implementation
Future<Map?> sendRemotePassToDevice(String? cloud, String deviceid,
String secret, String username, String password, Map? extra) async {
// Envía una contraseña remota a un dispositivo cloud
// cloud: url de /extern/send_ticket
// devideid: id del dispositivo
// secret: md5 del secreto del dispositivo
// username: usuario
// password: contraseña
String cloudurl = 'https://api.nmkeys.com/extern/send_ticket';
if (cloud != null) {
cloudurl = cloud;
}
final token = secret;
var params = {'site': 'Send remote pass'};
if (this.expiry != null) {
params['expiry'] = this.expiry.toString();
}
final headers = {
'User-Agent': 'NoMorePass-Dart/1.0',
'apikey': this.apikey
};
var url = Uri.parse(this.getidUrl);
var resp = await http.post(url, headers: headers, body: params);
if (resp.statusCode == 200) {
var dat = json.decode(resp.body);
if (dat['resultado'] == 'ok') {
final ticket = dat['ticket'];
final ep = nmpc.encrypt(password, token);
Map textra = {"type": "remote"};
if (extra != null) {
textra = extra;
}
params = {
'grant': 'grant',
'ticket': ticket,
'user': username,
'password': ep,
'extra': json.encode(textra)
};
url = Uri.parse(this.grantUrl);
resp = await http.post(url, headers: headers, body: params);
if (resp.statusCode == 200) {
dat = json.decode(resp.body);
if (dat['resultado'] == 'ok') {
params = {
'hash': token.substring(0, 10),
'ticket': ticket,
'deviceid': deviceid
};
url = Uri.parse(cloudurl);
resp = await http.post(url,
headers: {'content-type': 'application/json'},
body: utf8.encode(json.encode(params)));
if (resp.statusCode == 200) {
dat = json.decode(resp.body);
return dat;
} else {
//print(resp.statusCode);
return {"error": "error calling $cloudurl"};
}
} else {
return {"error": dat};
}
} else {
return {"error": "error calling granturl"};
}
} else {
return {"error": dat};
}
} else {
return {"error": "error calling getid"};
}
}