OpenAPI | Client

TsgcOpenAPI_Client è un componente non visuale che incapsula i principali metodi e proprietà per effettuare richieste HTTP da una specifica OpenAPI.

 

Ogni interfaccia OpenAPI creata con sgcOpenAPI Parser dispone di 2 metodi

 

  1. GetOpenAPIClient: è una funzione singleton che restituisce un'istanza della classe principale; se non esiste, viene creata automaticamente.
  2. FreeOpenAPIClient: libera la classe principale se è stata creata.

 

Esempio

Utilizzare Abstractapi per recuperare la localizzazione di un indirizzo IP.


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

 

 

Autenticazione

 

TLSOptions

Consente di configurare come connettersi a server SSL/TLS sicuri utilizzando il protocollo HTTP/1

 

ALPNProtocols: elenco dei protocolli ALPN che verranno inviati al server.

RootCertFile: percorso del file del certificato radice.

CertFile: percorso del file del certificato.

KeyFile: percorso del file della chiave del certificato.

Password: se il certificato è protetto da una password, impostarla qui.

VerifyCertificate: se il certificato deve essere verificato, abilitare questa proprietà.

VerifyDepth: è una proprietà Integer che rappresenta il numero massimo di link consentiti durante la verifica del certificato X.509.

Version: per impostazione predefinita utilizza TLS 1.0; se il server richiede una versione TLS superiore, è possibile selezionarla qui.

IOHandler: selezionare la libreria da utilizzare per la connessione tramite TLS.

iohOpenSSL: utilizza la libreria OpenSSL ed è l'impostazione predefinita per i componenti Indy. Richiede il deployment delle librerie openssl per win32/win64.

iohSChannel: utilizza Secure Channel, un protocollo di sicurezza implementato da Microsoft per Windows, non richiede la distribuzione delle librerie openssl. Funziona solo in Windows a 32/64 bit.

OpenSSL_Options: configurazione delle librerie openSSL.

APIVersion: consente di definire quale API OpenSSL verrà utilizzata.

oslAPI_1_0: utilizza l'API OpenSSL 1.0, l'ultima supportata da Indy

oslAPI_1_1: utilizza OpenSSL API 1.1, richiede la nostra libreria Indy personalizzata e consente l'utilizzo delle librerie OpenSSL 1.1.1 (con supporto TLS 1.3).

oslAPI_3_0: utilizza l'API 3.0 OpenSSL, richiede la nostra libreria Indy personalizzata e consente l'uso delle librerie OpenSSL 3.0.0 (con supporto TLS 1.3).

LibPath: qui è possibile configurare la posizione delle librerie openSSL

oslpNone: questa è l'impostazione predefinita; le librerie openSSL devono trovarsi nella stessa cartella del binario o in un percorso noto.

oslpDefaultFolder: imposta automaticamente il percorso openSSL dove le librerie devono essere situate per tutte le personalità IDE.

oslpCustomFolder: se questa è l'opzione selezionata, definire il percorso completo nella proprietà LibPathCustom.

LibPathCustom: quando LibPath = oslpCustomFolder, definire qui il percorso completo dove si trovano le librerie openSSL.

UnixSymLinks: abilita o disabilita il caricamento dei SymLink sui sistemi Unix (per impostazione predefinita è abilitato, tranne che su OSX64):

oslsSymLinksDefault: per impostazione predefinita sono abilitati, eccetto su OSX64 (dopo MacOS Monterey si verifica un errore nel tentativo di caricare la libreria senza versione.).

oslsSymLinksLoadFirst: Carica i SymLink e li elabora prima di tentare il caricamento delle librerie di versione.

oslsSymLinksLoad: Carica i SymLink dopo aver tentato di caricare le librerie di versione.

oslsSymLinksDontLoad: non caricare i SymLink.

SChannel_Options: consente di utilizzare un certificato dall'archivio certificati di Windows.

CertHash: è l'hash del certificato. È possibile trovare l'hash del certificato eseguendo un comando dir in PowerShell.

CipherList: qui è possibile impostare quali cifrari verranno utilizzati (separati da ":"). Esempio: CALG_AES_256:CALG_AES_128

CertStoreName: il nome dello store in cui è memorizzato il certificato. Selezioni uno dei seguenti:

scsnMY (il valore predefinito)

scsnCA

scsnRoot

scsnTrust

CertStorePath: il percorso dello store in cui è memorizzato il certificato. Selezionare uno dei seguenti:

scspStoreCurrentUser (predefinito)

scspStoreLocalMachine

 

 

 

Opzioni Proxy

Utilizzi questa proprietà per configurare le connessioni tramite un proxy.

 

Enabled: imposti a true per abilitare le connessioni proxy.

Host: Indirizzo del server proxy

Port: Porta del server proxy

UserName/Password: Autenticazione per la connessione al proxy, solo se richiesta.

ProxyType: sono supportati i seguenti proxy:

Log

Se la proprietà Log è abilitata, salva i messaggi socket in un file di log specificato, utile per il debug.

 

Log: abiliti se desidera salvare le richieste HTTP in un file di testo.

LogFileName: percorso completo del nome del file.

 

Proprietà

Altre proprietà che possono essere utilizzate per personalizzare il client OpenAPI:

 

EncodeBodyAsUTF8: se abilitato, il corpo JSON viene codificato in UTF8 (Per impostazione predefinita false).

 

 

Richieste asincrone

Per impostazione predefinita il client OpenAPI esegue le richieste in modo sincrono. Utilizzare l'API asincrona per eseguire una richiesta su un thread in background ed essere notificati tramite eventi, il che mantiene reattiva l'interfaccia utente e consente di annullare la richiesta.

HTTP_REQUEST_Async: esegue la richiesta su un thread di lavoro. Il client assume la proprietà dell'oggetto richiesta.

CancelAsync: annulla la richiesta in corso.

SynchronizeEvents: quando è True gli eventi vengono marshallati sul thread principale. Per impostazione predefinita è False e gli eventi vengono attivati nel thread di lavoro.

Il risultato viene fornito tramite i seguenti eventi:

OnResponse: la richiesta è stata completata, la risposta viene passata come parametro.

OnError: la richiesta è fallita, l'eccezione viene passata come parametro.

OnCancel: la richiesta è stata annullata da CancelAsync.

Eventi

Di seguito è riportato l'elenco degli eventi che è possibile gestire quando si utilizza il Client OpenAPI.

 

 

OnBeforeRequest

 

Questo evento viene chiamato prima dell'esecuzione della richiesta HTTP. Consente di personalizzare i nomi dei parametri, le intestazioni, la sicurezza, ecc. Di seguito un esempio su come sostituire il nome di alcuni parametri.

 


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

 

Questo evento viene chiamato quando un file viene caricato; è possibile utilizzarlo per conoscere l'avanzamento del caricamento.

 

OnDownload

 

Questo evento viene chiamato quando un file viene scaricato; è possibile utilizzarlo per conoscere l'avanzamento del download.

 

OnSSLVerifyPeer

 

Se la verifica del certificato è abilitata, in questo evento è possibile verificare e decidere se accettare il certificato del server.

 

OnSSLGetHandler

 

Questo evento viene generato prima che venga creato l'handler SSL; è possibile creare qui il proprio SSL Handler (deve ereditare da TIdServerIOHandlerSSLBase o TIdIOHandlerSSLBase) e impostare le proprietà necessarie.

 

OnSSLAfterCreateHandler

 

Se non è stato creato nessun oggetto SSL personalizzato, viene creato per impostazione predefinita utilizzando il gestore OpenSSL. È possibile accedere alle proprietà del gestore SSL e modificarle se necessario.