class KillBAPIError extends Error {
constructor(response) {
super(response.message.join(', '));
this.errorCode = response.errorCode;
this.statusCode = response.statusCode;
this.arguments = response.arguments;
}
}
const makeAPIRequest = async (endpoint, options) => {
try {
const response = await fetch(endpoint, options);
if (!response.ok) {
const error = await response.json();
throw new KillBAPIError(error);
}
return await response.json();
} catch (error) {
if (error instanceof KillBAPIError) {
// Lidar com erros da API
console.error(`Erro da API ${error.errorCode}:`, error.message);
if (error.statusCode === '401') {
// Token expirado, atualizar
await refreshToken();
return makeAPIRequest(endpoint, options);
}
if (error.errorCode === 'RAMP.0001') {
// Cotação expirada, obter nova
const newQuote = await getNewQuotation();
// Tentar novamente com nova cotação
}
}
throw error;
}
};