Skip to main content

Client Python per autenticazione e interazione con le API della Piattaforma Digitale Nazionale Dati (PDND).

Project description

pdnd-python-client

Client Python per autenticazione e interazione con le API della Piattaforma Digitale Nazionale Dati (PDND).

Licenza

MIT

Requisiti

  • Python >= 3.10 (versioni precedenti sono EOL)
  • PIP

Installazione

  1. Installa la libreria via composer:

    pip install pdnd-python-client
    
  2. 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"
       }
     }
    

Istruzioni

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()
client.set_token_file(f"tmp/pdnd_token_{config.get("purposeId")}.json")
token, exp = client.load_token()

if client.is_token_valid(exp):
    # Se il token è valido, lo carica da file
    token, exp = client.load_token()
else:
    # Generate a JWT token using the loaded configuration.
    jwt_gen = JWTGenerator(config)
    jwt_gen.set_debug(args.debug)
    jwt_gen.set_env(args.env)
    # Se il token non è valido, ne richiede uno nuovo
    token, exp = jwt_gen.request_token()
    # Salva il token per usi futuri
    client.save_token(token, exp)

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(token)

# Stampa il risultato
print(response)

Funzionalità aggiuntive

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.

Utilizzo da CLI

Esegui il client dalla cartella principale:

python main.py --api-url "https://api.pdnd.example.it/resource" --config /configs/progetto.json

Opzioni disponibili

  • --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
  • --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

Chiamata API generica:

python main.py --api-url="https://api.pdnd.example.it/resource" --config /configs/progetto.json

Verifica validità token:

python main.py --status-url="https://api.pdnd.example.it/status" --config /configs/progetto.json

Debug attivo:

python main.py --debug --api-url="https://api.pdnd.example.it/resource"

Opzione di aiuto

Se esegui il comando con --help oppure senza parametri, viene mostrata una descrizione delle opzioni disponibili e alcuni esempi di utilizzo:

python main.py --help

Output 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
  --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"

Variabili di ambiente supportate

Se un parametro non è presente nel file di configurazione, puoi definirlo come variabile di ambiente:

  • PDND_KID
  • PDND_ISSUER
  • PDND_CLIENT_ID
  • PDND_PURPOSE_ID
  • PDND_PRIVKEY_PATH

Note

  • Il token viene salvato in un file temporaneo e riutilizzato finché è valido.
  • Gli errori specifici vengono gestiti tramite la classe PdndException.

Esempio di configurazione minima

{
  "produzione": {
    "kid": "kid",
    "issuer": "issuer",
    "clientId": "clientId",
    "purposeId": "purposeId",
    "privKeyPath": "/tmp/key.pem"
  }
}

Esempio di configurazione per collaudo e prosuzione

{
  "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"
  }
}

Contribuire

Le pull request sono benvenute! Per problemi o suggerimenti, apri una issue.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdnd_python_client-0.1.6.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdnd_python_client-0.1.6-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file pdnd_python_client-0.1.6.tar.gz.

File metadata

  • Download URL: pdnd_python_client-0.1.6.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for pdnd_python_client-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8990ae1b4b8c3d34c4f92f01724cf1caee8e50e6848cb8a8cba464a5d1f7fd71
MD5 d5845320f3bd7ddac47c69848d67205a
BLAKE2b-256 119d91f693387c86ee3b9fb5ba98c6e6bffe6c1f1113b2f64c02482bfb86cac4

See more details on using hashes here.

File details

Details for the file pdnd_python_client-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for pdnd_python_client-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 480ea02f23826ab9404c854c1907c7ce832a958590d4645ec9830634f4a75cd8
MD5 a48d93fd773febaf6313143f04209f9d
BLAKE2b-256 89e2752afe7dc8d3ab4a31b7ee203891522bc99b68ba722e87c8f29153529bf7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page