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(args.config, args.env)

# 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(parse_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.2.tar.gz (9.0 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.2-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pdnd_python_client-0.1.2.tar.gz
  • Upload date:
  • Size: 9.0 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.2.tar.gz
Algorithm Hash digest
SHA256 28b4108e6ff71845be8eaf81baa22dc9c6db00fe4241a30f486d79e9c6e9f985
MD5 666dc45d0393700ed9b34022b1a46488
BLAKE2b-256 9b66b462e70fe191610cd0267e6f190907f55ccd8247043063b7f9e85fed7fd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pdnd_python_client-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 569de60325719f16d8ad8897ea2a54fb604e9eac9de7382f7d48d29fbe730a75
MD5 007d009a020aed6b24fa6b8dbf05005c
BLAKE2b-256 96fb1ea2af0aa17325d38b7632b04ad8fb2fd8a40791604c9b8a09913ebfd09c

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