Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Totvs custom tabs box
tabsInterfaces utilizadas,Fluxo de operação,Opções de deploy
idsinterfaces,fluxo,deploy
Totvs custom tabs box items
defaultyes
referenciainterfaces

São interfaces disponibilizadas na aplicação para uso na expansão das integrações:

Totvs custom tabs box
tabsAutenticação,Integração
idsauthenticator,gateway
Totvs custom tabs box items
defaultyes
referenciaauthenticator

A interface IStrategyAuthenticator define as formas de autenticação que poderão ser usadas pela integração.

Totvs custom tabs box
tabsMétodos visíveis,Propriedades
idsmethodsauth,propertiesauth
Totvs custom tabs box items
defaultyes
referenciamethodsauth
  • function SetAuthURL(const AValue: string): IStrategyAuthenticator;

  • function SetParam(const AName, AValue: string): IStrategyAuthenticator;

  • function SetParams(const AValue: TStrings): IStrategyAuthenticator;

  • function Authenticate(out AToken: string): THTTPCode;

Totvs custom tabs box items
defaultno
referenciapropertiesauth
  • ExpiresIn: Cardinal;
  • TokenType: string;

A interface IStrategyAuthContainer define o contêiner de armazenamento das definições de classes baseadas na interface IStrategyAuthenticator.

Totvs custom tabs box
tabsMétodos visíveis,Propriedades
idsmethodscont,propertiescont
Totvs custom tabs box items
defaultyes
referenciamethodscont
  • function AddAuthenticator(const AName: string; const AAuthenticator: TStrategyAuthenticatorClass): IStrategyAuthContainer;
  • function RemoveAuthenticator(const AName: string): IStrategyAuthContainer;
  • function Clear: IStrategyAuthContainer;
  • function SelectAuthenticator(const AName: string): IStrategyAuthContainer;
  • function SetAuthURL(const AValue: string): IStrategyAuthContainer;
  • function SetParam(const AName, AValue: string): IStrategyAuthContainer;
  • function Authenticate(out AToken: string): THTTPCode;
Totvs custom tabs box items
defaultno
referenciapropertiescont
  • Authenticator[const AName: string]: IStrategyAuthenticator;
  • Authenticators: TArray<string>;
Totvs custom tabs box items
defaultno
referenciagateway

A interface IGatewayBase define as classes de integração que podem ser agregadas à API.

Totvs custom tabs box
tabsMétodos visíveis,Propriedades
idsmethodsgw,propertiesgw
Totvs custom tabs box items
defaultyes
referenciamethodsgw
  • function SetAuthenticator(const AAuthenticator: IStrategyAuthenticator): IGatewayBase;
  • function SetRedisConnector(const AValue: IRedisConnector): IGatewayBase;
  • function TreatRequest(const ARequest: TWebRequest; const AResponse: TWebResponse; const APathInfo: TArray<string>): THTTPCode;
Totvs custom tabs box items
defaultno
referenciapropertiesgw

Não há propriedades expostas.

 A interface IGatewayFactory define a estrutura que armazena as definições das classes baseadas na interface IGatewayBase.

Totvs custom tabs box
tabsMétodos visíveis,Propriedades
idsmethodsfac,propertiesfac
Totvs custom tabs box items
defaultyes
referenciamethodsfac
  • function GetResource(const AKey: string): IGatewayBase;
  • function RegisterResource(const AKey: string; const AResource: TGatewayBaseClass): IGatewayFactory;
  • function Resources: TArray<string>;
Totvs custom tabs box items
defaultno
referenciapropertiesfac

Não há propriedades expostas.

Totvs custom tabs box items
defaultno
referenciafluxo

Este é o fluxo básico de operação das classes agregadas à API Gateway .

Totvs custom tabs box items
defaultno
referenciadeploy

São opções de deploy da API Gateway:

Totvs custom tabs box
tabsMicrosoft Windows,Debian Linux e derivados,Docker/Podman
idswindows,linux,docker
Totvs custom tabs box items
defaultyes
referenciawindows
Totvs custom tabs box
tabsCompilação,Configuração,Dependências
idscompilacaowin,configuracaowin,dependenciaswin
Totvs custom tabs box items
defaultyes
referenciacompilacaowin

A compilação pode ser feita para as seguintes arquiteturas:

  • 32 bits (obsoleta)
  • 64 bits

E deve obedecer a configuração Release.

Totvs custom tabs box items
defaultno
referenciaconfiguracaowin

As linhas a seguir devem ser adicionadas ao arquivo httpd.conf.

Bloco de código
titlehttpd.conf
LoadModule cesgw_module modules/mod_cesgw.so

<IfModule cesgw_module>
  <Location /api/tlra/cesgw/v1>
    SetHandler mod_cesgw-handler
  </Location>
</IfModule>

Após a alteração do arquivo, é necessário reiniciar o servidor Apache.

Totvs custom tabs box items
defaultno
referenciadependenciaswin

A API depende diretamente do banco de dados Redis, devendo este ser instalado no mesmo servidor.

Totvs custom tabs box items
defaultno
referencialinux
Totvs custom tabs box
tabsCompilação,Configuração,Dependências
idscompilacaolin,configuracaolin,dependenciaslin
Totvs custom tabs box items
defaultyes
referenciacompilalin

A compilação deve ser feita para a plataforma Linux 64 bits, usando a configuração Release.

Totvs custom tabs box items
defaultno
referenciaconfiguracaolin

A configuração da API depende destes dois arquivos, os quais devem ser colocados no diretório /etc/apache2/mods-available.

Bloco de código
titlecesgw.load
LoadModule cesgw_module /usr/lib/apache2/modules/mod_cesgw.so
Bloco de código
titlecesgw.conf
<IfModule cesgw_module>
  <Location /api/tlra/cesgw/v1>
    SetHandler mod_cesgw-handler
  </Location>
</IfModule>

Após a cópia dos arquivos para o diretório indicado, a seguinte sequência de comandos deve ser executada:

# a2enmod cesgw
# systemctl restart apache2

Totvs custom tabs box items
defaultno
referenciadependenciaslin

A API depende diretamente do banco de dados Redis, devendo este ser instalado no mesmo servidor.

Totvs custom tabs box items
defaultno
referenciadocker
Totvs custom tabs box
tabsCompilação,Criação da imagem,Deploy da imagem,Obtenção da imagem
idscompilacaodoc,geracaodoc,deploydoc,instalacaodoc
Totvs custom tabs box items
defaultyes
referenciacompilacaodoc

A compilação da API deve obedecer os princípios descritos na compilação para ambientes Linux 64 bits.

Totvs custom tabs box items
defaultno
referenciageracaodoc

A árvore de diretórios deve conter a seguinte estrutura:

Bloco de código
Diretório de trabalho
|
+-mod_cesgw.so
+-cesgw.conf
+-cesgw.load
+-cesgw.dockerfile

O arquivo cesgw.dockerfile deve conter:

Bloco de código
titlecesgw.dockerfile
FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive

# Instala Apache2 e Redis
RUN apt-get update && \
    apt-get install -y apache2 redis-server && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

# Cria diretórios necessários
RUN mkdir -p /usr/lib/apache2/modules \
             /etc/apache2/mods-available \
             /etc/apache2/mods-enabled \
             /var/log/totvs
RUN chmod 777 /var/log/totvs

# Copia o módulo e suas configurações
COPY mod_cesgw.so /usr/lib/apache2/modules/mod_cesgw.so
COPY cesgw.conf /etc/apache2/mods-available/cesgw.conf
COPY cesgw.load /etc/apache2/mods-available/cesgw.load

# Ativa o módulo
RUN a2enmod cesgw

# Expor a porta 80
EXPOSE 80

# Script de inicialização que roda o Redis e Apache juntos
CMD service redis-server start && apachectl -D FOREGROUND

E a criação da imagem é feita por meio dos comandos a seguir:

  • Docker
    • docker build -t tlra-cesgw:latest . -f ./cesgw.dockerfile
  • Podman
    • podman build -t tlra-cesgw:latest . -f ./cesgw.dockerfile


Totvs custom tabs box items
defaultno
referenciadeploydoc

Tendo sido criada a imagem, ela pode ser disponibilizada por meio dos seguintes comandos:

Totvs custom tabs box items
defaultno
referenciainstalacaodoc

Uma vez disponibilizada, a imagem pode ser obtida por meio dos seguintes comandos:

E sua inicialização pode ser comandada utilizando os seguintes comandos:


04. DEMAIS INFORMAÇÕES

Para maiores informações acerca do protocolo OAuth2, o artigo disponível aqui traz informações mais abrangentes sobre o assunto.

...