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.5.tar.gz (10.5 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.5-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pdnd_python_client-0.1.5.tar.gz
  • Upload date:
  • Size: 10.5 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.5.tar.gz
Algorithm Hash digest
SHA256 45d5b934cc351da3abe587ba8766b435fe864f633e4e123198cc74b1e6c0e0df
MD5 fc4bd9eef84d3f6b955e38f9e33e8e6c
BLAKE2b-256 bb5fd0be8d661bdf7e1da07dd80a1637af2ae4f30cc1e487581904c152d0e2a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pdnd_python_client-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b4b0e9ab5132ccbc74c03078ee8beb2c0a906f88264c591345d7b86a297e9021
MD5 b8ff6feb7ab3a6165ea15b92e189e256
BLAKE2b-256 dd46d32ce780bc3226649fc1e4fcccb9568c0f1e203acaae8fcc5da92b8465ef

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