Client Python per autenticazione e interazione con le API della Piattaforma Digitale Nazionale Dati (PDND).
MIT
- Python >= 3.10 (versioni precedenti sono EOL)
- PIP
-
Installa la libreria via composer:
pip install pdnd-python-client
-
Configura il file JSON con i parametri richiesti (esempio in
configs/sample.json):{ "collaudo": { "kid": "kid", "issuer": "issuer", "clientId": "clientId", "purposeId": "purposeId", "privKeyPath": "/tmp/key.priv" }, "produzione": { "kid": "kid", "issuer": "issuer", "clientId": "clientId", "purposeId": "purposeId", "privKeyPath": "/tmp/key.priv" } }
from pdnd_client.config import Config
from pdnd_client.jwt_generator import JWTGenerator
from pdnd_client.client import PDNDClient
config = Config("./configs/sample.json")
jwt_gen = JWTGenerator(config)
token, exp = jwt_gen.request_token()
client = PDNDClient()
client.set_token(token)
client.set_expiration(exp)
client.set_api_url("https://www.tuogateway.example.it/indirizzo/della/api")
client.set_filters("id=1234")
status_code, response = client.get_api()
# Stampa il risultato
print(response)from pdnd_client.config import Config
from pdnd_client.jwt_generator import JWTGenerator
from pdnd_client.client import PDNDClient
# Inizializza la configurazione
# Load the configuration from the specified JSON file and environment key.
config = Config("./configs/sample.json")
# Initialize the PDND client with the generated JWT token and SSL verification settings.
client = PDNDClient()
# Carica il token file precedentemente salvato
token, exp = client.load_token()
# verifica la scadenza del token
if not client.is_token_valid(exp):
# Generate a JWT token using the loaded configuration.
jwt_gen = JWTGenerator(config)
# Se il token non è valido, ne richiede uno nuovo
token, exp = jwt_gen.request_token()
# Salva su file esterno il token e la scadenza
client.save_token(token, exp)
client.set_api_url("https://www.tuogateway.example.it/indirizzo/della/api")
client.set_filters("id=1234")
status_code, response = client.get_api(token)
# Stampa il risultato
print(response)Disabilita verifica certificato SSL
La funzione client.set_verify_ssl(False) Disabilita verifica SSL per ambiente impostato (es. collaudo).
Default: true
Salva il token
La funzione client.save_token(token, exp) consente di memorizzare il token e la scadenza e non doverlo richiedere a ogni chiamata.
Carica il token salvato
La funzione client.load_token() consente di richiamare il token precedentemente salvato.
Valida il token salvato
La funzione client.is_token_valid() verifica la validità del token salvato.
Imposta nome al token file
La funzione client.set_token_file("tmp/tuofile.json") imposta un nome personalizzato al file.
Esegui il client dalla cartella principale:
python main.py --api-url "https://api.pdnd.example.it/resource" --config /configs/progetto.json--env: Specifica l'ambiente da usare (es. collaudo, produzione). Default:produzione--config: Specifica il percorso completo del file di configurazione (es:--config /configs/progetto.json)--debug: Abilita output dettagliato--pretty: Abilita l'output dei json formattato in modo leggibile--api-url: URL dell’API da chiamare dopo la generazione del token--api-url-filters: Filtri da applicare all'API (es. ?parametro=valore)--status-url: URL dell’API di status per verificare la validità del token--json: Stampa le risposte delle API in formato JSON--save: Salva il token per evitare di richiederlo a ogni chiamata--no-verify-ssl: Disabilita la verifica SSL (utile per ambienti di collaudo)--help: Mostra questa schermata di aiuto
Chiamata API generica:
python main.py --api-url="https://api.pdnd.example.it/resource" --config /configs/progetto.jsonVerifica validità token:
python main.py --status-url="https://api.pdnd.example.it/status" --config /configs/progetto.jsonDebug attivo:
python main.py --debug --api-url="https://api.pdnd.example.it/resource"Pretty attivo:
python main.py --pretty --api-url="https://api.pdnd.example.it/resource"Se esegui il comando con --help oppure senza parametri, viene mostrata una descrizione delle opzioni disponibili e alcuni esempi di utilizzo:
python main.py --helpOutput di esempio:
Utilizzo:
python main.py -c /percorso/config.json [opzioni]
Opzioni:
--env Specifica l'ambiente da usare (es. collaudo, produzione)
Default: produzione
--config Specifica il percorso completo del file di configurazione
--debug Abilita output dettagliato
--pretty Abilita output dei json formattandoli in modo leggibile
--api-url URL dell’API da chiamare dopo la generazione del token
--api-url-filters Filtri da applicare all'API (es. ?parametro=valore)
--status-url URL dell’API di status per verificare la validità del token
--json Stampa le risposte delle API in formato JSON
--save Salva il token per evitare di richiederlo a ogni chiamata
--no-verify-ssl Disabilita la verifica SSL (utile per ambienti di collaudo)
--help Mostra questa schermata di aiuto
Esempi:
python main.py --api-url="https://api.pdnd.example.it/resource" --config /percorso/config.json
python main.py --status-url="https://api.pdnd.example.it/status" --config /percorso/config.json
python main.py --debug --api-url="https://api.pdnd.example.it/resource"
Se un parametro non è presente nel file di configurazione, puoi definirlo come variabile di ambiente:
PDND_KIDPDND_ISSUERPDND_CLIENT_IDPDND_PURPOSE_IDPDND_PRIVKEY_PATH
- Il token viene salvato in un file temporaneo e riutilizzato finché è valido.
- Gli errori specifici vengono gestiti tramite la classe
PdndException.
{
"produzione": {
"kid": "kid",
"issuer": "issuer",
"clientId": "clientId",
"purposeId": "purposeId",
"privKeyPath": "/tmp/key.pem"
}
}{
"collaudo": {
"kid": "kid",
"issuer": "issuer",
"clientId": "clientId",
"purposeId": "purposeId",
"privKeyPath": "/tmp/key.pem"
},
"produzione": {
"kid": "kid",
"issuer": "issuer",
"clientId": "clientId",
"purposeId": "purposeId",
"privKeyPath": "/tmp/key.pem"
}
}Le pull request sono benvenute! Per problemi o suggerimenti, apri una issue.