call method
Implementation
Future<ProprietarioDetran> call(
String placa, int? codOrgaoAutuador, String? sgUf) async {
if (!licencePlateCarRegex.hasMatch(placa)) {
throw InvalidFormException(
message: 'A placa não segue o padrão esperado');
}
String orgadoAutuador = '';
if (codOrgaoAutuador != null) {
orgadoAutuador = '/$codOrgaoAutuador';
}
String ufPesquisa = '';
if (sgUf != null) {
ufPesquisa = '&sgUf=$sgUf';
}
final response = await httpClient
.get('$orgadoAutuador/detran?nrPlaca=$placa$ufPesquisa');
var entries = response
.asXml()
.descendantElements
.where((node) =>
(node.children.firstOrNull is XmlText || node.children.isEmpty) &&
node.depth == 5)
.map((node) => MapEntry(node.name.toString(),
(node.innerText.isEmpty ? null : node.innerText)));
var map = Map.fromEntries(entries);
if (map.containsKey('codigoRetExec') && map['codigoRetExec'] != '0') {
if (map['messageError'] == 'Orgao nao registrado') {
throw OrgaoNaoRegistradoException(message: map['messageError'] ?? '');
}
throw NotFoundException(message: map['messageError'] ?? '');
}
return ProprietarioDetran.fromJson(map);
}