73 lines
2.1 KiB
JavaScript
73 lines
2.1 KiB
JavaScript
import { esperar } from "./variaveisComuns";
|
|
export const codigosErros = {
|
|
400: "Erro de requisição",
|
|
403: "Não autenticado",
|
|
500: "Erro interno",
|
|
504: "Tempo de resposta excedido",
|
|
};
|
|
export class Resposta {
|
|
constructor(funcaoErroInterno, opcoes) {
|
|
this.funcaoErroInterno = funcaoErroInterno;
|
|
this.detalhesErroInterno = (opcoes === null || opcoes === void 0 ? void 0 : opcoes.detalhesErroInterno) || false;
|
|
}
|
|
addResultado(resultado) {
|
|
return {
|
|
codigo: 200,
|
|
eErro: false,
|
|
valor: resultado,
|
|
erro: undefined,
|
|
};
|
|
}
|
|
addSucesso(resultado) {
|
|
return this.addResultado(resultado);
|
|
}
|
|
addTrue() {
|
|
return this.addResultado(true);
|
|
}
|
|
addErro(erro, codigo) {
|
|
return {
|
|
codigo: codigo || 400,
|
|
eErro: true,
|
|
erro: erro,
|
|
valor: undefined,
|
|
};
|
|
}
|
|
addErroEspera(erro) {
|
|
return {
|
|
codigo: 504,
|
|
eErro: true,
|
|
erro: erro || codigosErros[504],
|
|
valor: undefined,
|
|
};
|
|
}
|
|
addErroInterno(...opcoes) {
|
|
//comunica o suporte sobre o erro
|
|
this.funcaoErroInterno(...opcoes);
|
|
return {
|
|
codigo: 500,
|
|
eErro: true,
|
|
erro: "Erro interno: Contate o suporte técnico.",
|
|
valor: undefined,
|
|
detalhes: this.detalhesErroInterno ? opcoes : undefined,
|
|
};
|
|
}
|
|
async addPromise(promise, limiteEspera) {
|
|
try {
|
|
const resultado = await Promise.race([
|
|
Promise.resolve(promise())
|
|
.then((re) => this.addResultado(re))
|
|
.catch((er) => this.addErro(er.message || er)),
|
|
...(limiteEspera
|
|
? [esperar(limiteEspera).then(() => this.addErroEspera())]
|
|
: []),
|
|
]);
|
|
return resultado;
|
|
}
|
|
catch (error) {
|
|
return this.addErro("Erro na resolução da Promessa.");
|
|
}
|
|
}
|
|
}
|
|
export const respostaCM = new Resposta(() => {
|
|
//
|
|
});
|