Open felipou opened 9 years ago
Acabei de ter um problema com esse tentativa de solução que enviei: uma resposta contendo um atributo errors
cujo valor era um objeto vazio ({}
). Tive que modificar da seguinte maneira (já está ficando feio o código, mas é uma solução paliativa pra mim, sugiro pensarem em alguma forma melhor de fazer isso):
if (response.error || ( response.errors &&
Object.keys( response.errors ).length > 0 ) ) {
var err = response.error || response.errors;
if (res.statusCode === 401) {
err = new Error.IuguAuthenticationError(err);
} else {
err = Error.IuguError.generate(err);
}
return callback.call(self, err, null);
}
na verdade não ficou feio @felipou .. veja pelo stack overflow questão sobre tratamentos de objetos vazios:
http://stackoverflow.com/questions/4994201/is-object-empty
Talvez é questão de fazer uma função genéria isEmpty e aplicá-la para ficar mais "elegante"
@felipou você pode enviar um exemplo da chamada que retorna errors? Obrigado.
curl https://api.iugu.com/v1/invoices/ASDF
Acabei de testar com um token de teste. O corpo do retorno foi: {"errors":"Invoice Not Found"}
Mas faz muito tempo que encontrei esse problema, e acredito que foi em outros endpoints. Mas esse foi o primeiro que testei aqui agora pra tentar achar esse tipo de retorno.
O código de tratamento de erros na resposta da API procura por um atributo
error
, mas a documentação (e minha experiência com a API) diz que os erros virão em um atributoerrors
:Fiz um teste básico com o seguinte código, verificando tanto por um
error
quanto por umerrors
, e funcionou corretamente:Não fiz um pull request pois não pude testar corretamente e extensivamente esse código, então achei melhor reportar aqui. Espero ter ajudado :)