OpenAPI | Client

TsgcOpenAPI_Client é um componente não visual que encapsula os principais métodos e propriedades para fazer requisições HTTP a partir de uma especificação OpenAPI.

 

Toda interface OpenAPI criada com o sgcOpenAPI Parser possui 2 métodos

 

  1. GetOpenAPIClient: é uma função singleton que retorna uma instância da classe principal; se não existir, ela a cria automaticamente.
  2. FreeOpenAPIClient: libera a classe principal se ela estiver criada.

 

Exemplo

Utilize a Abstractapi para recuperar a localização de um Endereço IP.


GetOpenAPIClient.Retrieve_the_location_of_an_IP_address('your api', '80.258.15.2');

 

 

Autenticação

 

TLSOptions

Permite configurar como se conectar a servidores SSL/TLS seguros usando o protocolo HTTP/1

 

ALPNProtocols: lista dos protocolos ALPN que serão enviados ao servidor.

RootCertFile: caminho para o arquivo de certificado raiz.

CertFile: caminho para o arquivo de certificado.

KeyFile: caminho para o arquivo de chave do certificado.

Password: se o certificado está protegido com uma senha, defina-a aqui.

VerifyCertificate: se o certificado deve ser verificado, habilite esta propriedade.

VerifyDepth: é uma propriedade Integer que representa o número máximo de links permitidos quando a verificação é realizada para o certificado X.509.

Version: por padrão usa TLS 1.0; se o servidor exigir uma versão TLS superior, ela pode ser selecionada aqui.

IOHandler: selecione qual biblioteca você usará para a conexão usando TLS.

iohOpenSSL: utiliza a biblioteca OpenSSL e é o padrão para componentes Indy. Requer implantar as bibliotecas openssl para win32/win64.

iohSChannel: utiliza o Secure Channel, que é um protocolo de segurança implementado pela Microsoft para Windows, não requer a implantação de bibliotecas openssl. Funciona apenas no Windows 32/64 bits.

OpenSSL_Options: configuração das bibliotecas openSSL.

APIVersion: permite definir qual API OpenSSL será usada.

oslAPI_1_0: usa a API 1.0 do OpenSSL, é a mais recente suportada pelo Indy

oslAPI_1_1: usa a API 1.1 do OpenSSL, requer nossa biblioteca Indy personalizada e permite usar as bibliotecas OpenSSL 1.1.1 (com suporte a TLS 1.3).

oslAPI_3_0: utiliza a API 3.0 do OpenSSL, requer nossa biblioteca Indy personalizada e permite utilizar as bibliotecas OpenSSL 3.0.0 (com suporte a TLS 1.3).

LibPath: aqui você pode configurar onde estão localizadas as bibliotecas openSSL

oslpNone: este é o padrão, as bibliotecas openSSL devem estar na mesma pasta onde está o binário ou em um caminho conhecido.

oslpDefaultFolder: define automaticamente o caminho openSSL onde as bibliotecas devem estar localizadas para todas as personalidades do IDE.

oslpCustomFolder: se esta for a opção selecionada, defina o caminho completo na propriedade LibPathCustom.

LibPathCustom: quando LibPath = oslpCustomFolder, defina aqui o caminho completo onde estão localizadas as bibliotecas openSSL.

UnixSymLinks: habilita ou desabilita o carregamento de SymLinks em sistemas Unix (por padrão está habilitado, exceto no OSX64):

oslsSymLinksDefault: por padrão estão habilitados, exceto sob OSX64 (após o MacOS Monterey falha ao tentar carregar a biblioteca sem versão.).

oslsSymLinksLoadFirst: Carrega os SymLinks e faz isso antes de tentar carregar as bibliotecas de versão.

oslsSymLinksLoad: Carrega os SymLinks após tentar carregar as bibliotecas de versão.

oslsSymLinksDontLoad: não carrega os SymLinks.

SChannel_Options: permite que você utilize um certificado do Windows Certificate Store.

CertHash: é o Hash do certificado. Você pode encontrar o Hash do certificado executando um comando dir no powershell.

CipherList: aqui você pode definir quais Ciphers serão usados (separados por ":"). Exemplo: CALG_AES_256:CALG_AES_128

CertStoreName: o nome do store onde o certificado está armazenado. Selecione um dos abaixo:

scsnMY (o padrão)

scsnCA

scsnRoot

scsnTrust

CertStorePath: o caminho do store onde o certificado está armazenado. Selecione um dos abaixo:

scspStoreCurrentUser (o padrão)

scspStoreLocalMachine

 

 

 

Opções de Proxy

Utilize esta propriedade para configurar as conexões através de um proxy.

 

Enabled: defina como true para habilitar conexões de proxy.

Host: Endereço do servidor proxy

Port: Porta do servidor proxy

UserName/Password: Autenticação para conectar ao proxy, apenas se necessário.

ProxyType: os seguintes proxies são suportados:

Log

Se a propriedade Log estiver habilitada, ela salva as mensagens de socket em um arquivo de log especificado, útil para depuração.

 

Log: habilite se você quiser salvar as requisições HTTP em um arquivo de texto.

LogFileName: caminho completo para o nome do arquivo.

 

Properties

Outras propriedades que podem ser utilizadas para personalizar o cliente OpenAPI:

 

EncodeBodyAsUTF8: se habilitado, o corpo JSON é codificado como UTF8 (por padrão false).

 

 

Eventos

Encontre abaixo a lista dos eventos que você pode tratar ao utilizar o OpenAPI Client.

 

 

OnBeforeRequest

 

Este evento é chamado antes que a requisição HTTP seja chamada. Permite personalizar os nomes dos Parâmetros, Headers, segurança... Veja abaixo um exemplo de como substituir o nome de alguns parâmetros.

 


procedure OnBeforeRequestEvent(Sender: TObject; const aRequest: TsgcOpenAPIRequest);
var
  i: Integer;
  oParameter: TsgcOpenAPIParameter;
begin
  for i := 0 to aRequest.Parameters.Count - 1 do
  begin
    oParameter := aRequest.Parameters[i];
    if oParameter._Name = 'meta-modified-from' then
      oParameter._name := 'eventDateTime-from';
    if oParameter._Name = 'meta-modified-to' then
      oParameter._name := 'eventDateTime-to';
  end;
end;

OnUpload

 

Este evento é chamado quando um arquivo é enviado (upload); você pode utilizar este evento para saber o progresso do upload.

 

OnDownload

 

Este evento é chamado quando um arquivo é baixado, você pode usar este evento para conhecer o progresso do download.

 

OnSSLVerifyPeer

 

Se a verificação de certificado estiver habilitada, neste evento você pode verificar e decidir se aceita o certificado do servidor.

 

OnSSLGetHandler

 

Este evento é gerado antes do handler SSL ser criado; você pode criar aqui seu próprio SSL Handler (precisa ser herdado de TIdServerIOHandlerSSLBase ou TIdIOHandlerSSLBase) e definir as propriedades necessárias

 

OnSSLAfterCreateHandler

 

Se nenhum objeto SSL personalizado foi criado, ele é criado por padrão usando o handler OpenSSL. Você pode acessar as propriedades do SSL Handler e modificá-las se necessário