Problema
Il toolkit non ha un source type per download via HTTP POST. I candidate che usano endpoint POST (es. MEF DAG datipensioni) sono costretti a script locali di staging fuori dal toolkit.
Caso reale: dataset-incubator/candidates/pensioni-pa-dag usa scripts/download_raw.py con requests.post(url, data={...}) per scaricare Dati_Tipo_Pensione_totale.csv.
Proposta
Aggiungere un plugin http_post_file che estende http_file con supporto POST:
raw:
sources:
- name: "pensioni_dag"
type: "http_post_file"
args:
url: "https://datipensioni.mef.gov.it/datipensioni/downloadFile"
post_data:
filename: "Dati_Tipo_Pensione_totale.csv"
categoria: "pensioni"
Note implementative
http_file.py fa già fetch, caching e write — il nuovo plugin deve solo:
- usare
requests.post invece di requests.get
- passare
data= per i parametri POST
- gestire l'eventuale retry con cookie (pattern usato nel caso DAG: GET sulla page prima del retry POST)
- Registrare in
toolkit/plugins/__init__.py come builtin
- Stesso pattern di test di
http_file
Stimoy sforzo
Basso. Plugin esistente http_file.py come base, ~50-80 righe di codice nuovo + test.
Alternativa
Restare con script locali nei candidate — ma questo frammenta la logica di fetch fuori dal toolkit e rende i candidate meno autosufficienti.
Ref: dataset-incubator#96
Problema
Il toolkit non ha un source type per download via HTTP POST. I candidate che usano endpoint POST (es. MEF DAG datipensioni) sono costretti a script locali di staging fuori dal toolkit.
Caso reale:
dataset-incubator/candidates/pensioni-pa-dagusascripts/download_raw.pyconrequests.post(url, data={...})per scaricareDati_Tipo_Pensione_totale.csv.Proposta
Aggiungere un plugin
http_post_fileche estendehttp_filecon supporto POST:Note implementative
http_file.pyfa già fetch, caching e write — il nuovo plugin deve solo:requests.postinvece direquests.getdata=per i parametri POSTtoolkit/plugins/__init__.pycome builtinhttp_fileStimoy sforzo
Basso. Plugin esistente
http_file.pycome base, ~50-80 righe di codice nuovo + test.Alternativa
Restare con script locali nei candidate — ma questo frammenta la logica di fetch fuori dal toolkit e rende i candidate meno autosufficienti.
Ref: dataset-incubator#96