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
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');
auth2Code: É utilizado para realizar autenticação e autorização na maioria dos tipos de aplicações, incluindo aplicações de página única, aplicações web e aplicações instaladas nativamente. O fluxo permite que as aplicações adquiram com segurança access_tokens que podem ser utilizados para acessar recursos protegidos, bem como refresh tokens para obter access_tokens adicionais, e ID tokens para o usuário autenticado.
auth2ClientCredentials: Este tipo de grant é comumente utilizado para interações server-to-server que devem ser executadas em segundo plano, sem interação imediata com um usuário. Esses tipos de aplicações são frequentemente chamados de daemons ou contas de serviço.
Leia mais sobre OAuth2.
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
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:
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.
Outras propriedades que podem ser utilizadas para personalizar o cliente OpenAPI:
EncodeBodyAsUTF8: se habilitado, o corpo JSON é codificado como UTF8 (por padrão false).
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