ExcecaoErroSerpro.doCodigo constructor

ExcecaoErroSerpro.doCodigo(
  1. String codigo
)

Cria exceção a partir do código de erro SERPRO

Implementation

factory ExcecaoErroSerpro.doCodigo(String codigo) {
  switch (codigo) {
    // Erros de acesso negado
    case 'AcessoNegado-AUTENTICAPROCURADOR-009':
      return ExcecaoErroSerpro(
        'Certificado Digital deve ser e-PF, e-CPF, e-PJ ou e-CNPJ',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-010':
      return ExcecaoErroSerpro(
        'Certificado Digital está expirado',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-011':
      return ExcecaoErroSerpro(
        'NI do procurador difere do NI no certificado',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-012':
      return ExcecaoErroSerpro(
        'NI do contratante difere do NI do assinante do XML',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-013':
      return ExcecaoErroSerpro(
        'XML assinado inválido',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-021':
      return ExcecaoErroSerpro(
        'Certificado fornecido não possui extensões da ICP-Brasil',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-023':
      return ExcecaoErroSerpro(
        'O certificado informado não está autorizado',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-037':
      return ExcecaoErroSerpro(
        'Certificado revogado',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-039':
      return ExcecaoErroSerpro(
        'Certificado inválido conforme padrão X509Certificate2',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-040':
      return ExcecaoErroSerpro(
        'Cadeia de certificados não é confiável',
        codigo: codigo,
        statusHttp: 403,
      );
    case 'AcessoNegado-AUTENTICAPROCURADOR-041':
      return ExcecaoErroSerpro(
        'O certificado não pode ser do tipo autoassinado',
        codigo: codigo,
        statusHttp: 403,
      );

    // Erros de entrada incorreta
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-002':
      return ExcecaoErroSerpro(
        'Parâmetros de entrada inválidos. Campo xml nulo, vazio ou não encontrado',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-015':
      return ExcecaoErroSerpro(
        'Estrutura XML inválida: tag obrigatória ausente',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-016':
      return ExcecaoErroSerpro(
        'Estrutura XML inválida: atributo de tag incorreto',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-017':
      return ExcecaoErroSerpro(
        'Data de vigência deve ser maior ou igual que a data corrente',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-018':
      return ExcecaoErroSerpro(
        'Data de assinatura não deve ser posterior à data atual',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-019':
      return ExcecaoErroSerpro(
        'Tag raiz deve ser termoDeAutorizacao',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-020':
      return ExcecaoErroSerpro(
        'String XML não é base64 válido',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-025':
      return ExcecaoErroSerpro(
        'XML sem assinatura',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-026':
      return ExcecaoErroSerpro(
        'Elemento CanonicalizationMethod inválido',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-027':
      return ExcecaoErroSerpro(
        'Elemento SignatureMethod inválido',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-028':
      return ExcecaoErroSerpro(
        'Apenas um elemento Reference é requerido/permitido',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-029':
      return ExcecaoErroSerpro(
        'Assinatura deve cobrir todo o documento',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-030':
      return ExcecaoErroSerpro(
        'Elemento DigestMethod inválido',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-031':
      return ExcecaoErroSerpro(
        'Métodos de transformação obrigatórios ausentes',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-032':
      return ExcecaoErroSerpro(
        'Apenas um elemento KeyInfo/X509Data é requerido/permitido',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-033':
      return ExcecaoErroSerpro(
        'Documento alterado pós-assinatura ou validade da assinatura comprometida',
        codigo: codigo,
        statusHttp: 400,
      );
    case 'EntradaIncorreta-AUTENTICAPROCURADOR-038':
      return ExcecaoErroSerpro(
        'XML malformado com caracteres inválidos detectados',
        codigo: codigo,
        statusHttp: 403,
      );

    // Erros do sistema
    case 'Erro-AUTENTICAPROCURADOR-003':
      return ExcecaoErroSerpro(
        'Falha no login',
        codigo: codigo,
        statusHttp: 500,
      );
    case 'Erro-AUTENTICAPROCURADOR-008':
      return ExcecaoErroSerpro(
        'Erro na validação do certificado digital',
        codigo: codigo,
        statusHttp: 500,
      );
    case 'Erro-AUTENTICAPROCURADOR-014':
      return ExcecaoErroSerpro(
        'Falha na extração de CNPJ do certificado',
        codigo: codigo,
        statusHttp: 500,
      );
    case 'Erro-AUTENTICAPROCURADOR-034':
      return ExcecaoErroSerpro(
        'Padrão de assinatura não reconhecido',
        codigo: codigo,
        statusHttp: 500,
      );

    default:
      return ExcecaoErroSerpro(
        'Erro desconhecido: $codigo',
        codigo: codigo,
        statusHttp: 500,
      );
  }
}