sendRemotePassToDevice method

Future<Map?> sendRemotePassToDevice(
  1. String? cloud,
  2. String deviceid,
  3. String secret,
  4. String username,
  5. String password,
  6. Map? extra,
)

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