gsferro/microservico

Criado com objetivo de generalizar o consumo de API/WEBSERVICES


Keywords
api, laravel, Microservice, websevices
License
MIT

Documentation

Laravel Microserviço

Criado com objetivo de generalizar o consumo de API/WEBSERVICES

Instalação:

composer require gsferro/microservico

php artisan vendor:publish --provider="Gsferro\MicroServico\Providers\MicroServicoServiceProvider"

Versão 1.0

Os hosts são pré-configurados no arquivo microserviço.

POST
microservico()->post($api, $array);
PUT
microservico()->put($api, $param, $array);
GET
microservico()->get($api, $param);
GET WITH DATA

para ser usada com parametros url

microservico()->getWithData($api, $arrayData);
Access Token

Recupera o token oauth2 / jwt

microservico()->accessToken(
    $api, 
    $clienteId, 
    $clienteSecret, 
    $grantType = "client_credentials", 
    $authorization = "Basic"
);
CURL

Devolve uma chamada de Curl::to

microservico()->api($api);

DELETE

microservico()->delete($api, $param);

Chamada get de api via url

microservico()->to($url, $params = null);

Adicionar extra Header

microservico()->setExtraHeader([
       "content-type"  => "application/json",
       "Authorization" => "Basic abcdefghijabcdefghijABCDEFGHIJ=",
   ]);

EXEMPLOS

public function getTaxa(Request $request)
{
    $dados      = $request->all();
    $host_taxa  = 'ROUTE_EDITAIS_ETAPAS_TAXAS';

    return microservico()->get($host_taxa, $dados['taxa_id']);
}

public function removerTaxa(Request $request)
{
    $dados      = $request->all();
    $id         = $dados['taxa_id'];
    $host_taxa  = 'ROUTE_EDITAIS_ETAPAS_TAXAS';

    $resultado = microservico()->delete($host_taxa, $param);

    if ($resultado->success == true) {
        $return = [
            'type' => 'success',
            'msg' => utf8_encode('Dados atualizados com sucesso!'),
        ];
    } else {
        $return = [
            'type' => 'error',
            'msg' => utf8_encode('Ocorreu um erro!'),
        ];
    }

    return $return;
}

public function adicionarTaxa(Request $request)
{
    $dados      = $request->all();
    $host_taxa  = 'ROUTE_EDITAIS_ETAPAS_TAXAS';
    $resultado  = microservico()-post($host_taxa, $dados);

    if ($resultado->success == true) {
        $return = [
            'type' => 'success',
            'msg' => utf8_encode('Dados atualizados com sucesso!'),
        ];
    } else {
        $return = [
            'type' => 'error',
            'msg' => utf8_encode('Ocorreu um erro!'),
        ];
    }

    return $return;
}

public function editarTaxa(Request $request)

{
    $dados = $request->all();

    $id = $dados['taxa_id'];

    unset($dados['taxa_id']);

    $host_taxa = 'ROUTE_EDITAIS_ETAPAS_TAXAS';

    $resultado = microservico()-put($host_taxa, $param ,$dados);

    if ($resultado->success == true) {
        $return = [
            'type' => 'success',
            'msg' => utf8_encode('Dados atualizados com sucesso!'),
        ];
    } else {
        $return = [
            'type' => 'error',
            'msg' => utf8_encode('Ocorreu um erro!'),
        ];
    }

    return $return;
}

microservico()->getWithData("exemplo", ["foo" => "bar"]);
// url: http://exemplo.com.br?foo=bar

Versão 2.0

  • Implementação do principio: Tell, Don´t ask, criando métodos que já implementam a lógica em cima da chamada da api, evitando assim que toda a vez que for usado em um projeto, aja a necessidade de copiar o código.
  • Para manter a compatibilidade, ainda poderá ser usado o metodo da v1 e os retornos deles não foram alterado.
  • Nas novas apis, foi aplicado o padrão snake_case em todos os campos.
  • Necessário para implementação de segurança, além das que já existe no integrator, nas apis internas seguindo o exigido pela nova lei da LGPD.
  • O verbo http é o prefixo do metodo, seguindo com o devido endpoint configurado no config.microservico.
  • PHPDoc implementado em cada novo metodo com retornos e parametros
  • Tests Units testando todos os endpoints quanto ao retorno de estrutura, array e json, apontando para os ambients de produção, foram implementados no projeto ACESSO.

Retorno customizado

  • Para setar como deseja receber o retorno: array ou json (default array) microservico()->returnJson()

Configuração

  • No env, QUE NÃO SEJA DE PRODUÇÃO, sete:
############## configurar somente para ambientes de desenv/teste/homol:

# desenv
API_V1_SERVICE="desenv-basecorporativa" 
APP_AMBIENTE="Desenv -"

# teste
API_V1_SERVICE="teste-basecorporativa" 
APP_AMBIENTE="Teste -"

# homol
API_V1_SERVICE="homolog-basecorporativa" 
APP_AMBIENTE="Homolog -"

# APP_AMBIENTE pode ser usado também para concatenar ao nome do sistema para deixar claro o ambiente

Uso

  • Para usar a api de algum serviço/projeto, é necessário solicitar usuário e senha e colocar no env:
GSFERRO_MICROSERVICO_WSO2_EI_USER
GSFERRO_MICROSERVICO_WSO2_EI_PASSWORD
  • lista de apis por serviço:
    1. ACESSO
      1. getProgramasEspeciais()
      2. getDadosModal(int $idEdicao)
      3. getPessoaInscricoes(string $uuidPessoa)
      4. getListaProgramasEspeciais(int $idProgramaEspecial)
      5. getListaEditaisAbertos()
      6. getListaProgramasEspeciaisComFuturos(int $idProgramaEspecial)
      7. getListaCandidatosProgramaEspecial(int $idProgramaEspecial)
      8. getListaCandidatosProgramaEdital(string $uuidEdital)
      9. getDataDivulgacao(string $uuidEdital)
    2. SICAVE
      1. getSicaveVeiculo(string $cpf)
      2. getSicaveAdvertencias(string $cpf)
    3. BANCO COMPETENCIAS
      1. getVerificaCompetencia(string $cpf)
      2. getListarCompetenciasPorCPF(string $cpf)
      3. getVerificaCompetenciaProxy(string $cpf)
      4. getListarCompetenciasPorCPFProxy(string $cpf)
    4. SERVIDORES (v3)
      1. getContarTotalColaboradores()
      2. getBuscarCargosServidoresFiocruz()
      3. getBuscarColaboradorPorCpf(string $cpf, bool $somenteSituacaoAtivo = true)
      4. getBuscarColaboradorPorNome(string $nome, bool $somenteSituacaoAtivo = true)
      5. getBuscarColaboradorPorMatriculaSiape(int $matricula)
      6. getBuscarColaboradoresPorVinculo(string $vinculo)
      7. getBuscarColaboradoresPorCodigoLocalizacao(string $codigolocalizacao)
      8. getBuscarColaboradoresPorCodigoLotacao(string $codigolotacao)
      9. getBuscarColaboradorAtivoPorEmail(string $email)
      10. getTodoHistoricoLotacaoLocalizacaoPorMatricula(string $matriculaSiape)
      11. getBuscarColaboradoresPorVinculoPaginando($codigoVinculo = "02", int $limin = 1, int $limax = 10)
      12. getBuscarColaboradoresPorCodigoLotacaoPaginando($codigoLotacao, int $limin = 1, int $limax = 10)
    5. TRANSPORTE
      1. getListarUsuariosPorLinha($usuLinha)
      2. getLinhasusuario(string $cpf)
    6. SIEF
      1. getContarEdicoes()
      2. getIndiceProgramas()
      3. getListarEditaisPrevistos()
      4. getListarProcessosSeletivosAbertos()
      5. getBuscarCurso(int $idCurso)
      6. getListarCoordenadoresCurso(int $idCurso)
      7. getListarLinhasDePesquisa(int $idCurso)
      8. getListarDocumentosPorEdital(string $uuidEdital)
      9. getInscritosProcessoSeletivo(string $uuidEdital)
      10. getListarCandidatosDesistentesEdital(string $uuidEdital)
      11. getBuscarNatureza(int $idNatureza)
      12. getBuscarPrograma(int $idPrograma)
      13. getBuscarUnidade(string $uuidUnidade)
      14. getBuscarNaturezaTipo(int $idNatTipo)
      15. getBuscarTipoNatureza(int $idTipo)
      16. getListarEdicoesCursos(int $limim = 1, int $limax = 1)
      17. getBuscarPais(string $uuidPais)
      18. getBuscarCidade(string $uuidCidade)
      19. getBuscarUF(string $uuidUf)
    7. MOBILIDADE
      1. getObterEditaisPublicados()
      2. getObterAnexosEdital(int $idEdital)
      3. getListarDadosPorMatricula(string $codigo)
      4. getListarSituacaoFuncionalPorCodigo(string $codigo)
      5. getListarTipoAfastamentoPorCodigo(string $codigo)
      6. getListarMatriculaCargoPorCpf(string $cpf)
      7. getListarAvaliacaoDesempenhoPorSiape(string $matriculaSiape, int $anoInicial, int $anoFinal)
      8. getListarAfastamentoServidorSiapeDataInicio(string $matriculaSiape, string $dtInicio, string $dtFim)
      9. getListarAfastamentoServidorSiapeDataFim(string $matriculaSiape, string $dtInicio, string $dtFim)
      10. getListarHistoricoLotacaoLocalizacao(string $matriculaSiape, string $anoInicial, string $anoFinal)
      11. getListarHistoricoLotacaoLocalizacaoPorAno(string $matriculaSiape, int $anoInicial, int $anoFinal)
    8. BASE CORPORATIVA
      1. getDadosPessoais(string $cpf)
      2. getDadosPessoaisPorEmail(string $email)
    9. RSI
      1. getListarHistoricoChamadosPorCpf(string $cpf)
      2. getListarChamadosAbertosPorCpf(string $cpf)
      3. getListarChamadosNaoFinalizadosPorCpf(string $cpf)
      4. getListarChamadosEncerrados(int $limim = 1, int $limax = 10)
      5. getListarServicos(int $limim = 1, int $limax = 10)
      6. getListarTecnicosPorEquipe(int $limim = 1, int $limax = 10)
      7. getListarDadosRequisicao(int $limim = 1, int $limax = 10)
    10. LOGIN UNICO
      1. getListarDadosPorEmail(string $email)
      2. getListarDadosPorCpf(string $cpf)