ICS → Importatore Discourse tramite API REST

Questa è una buona domanda, Nathan, e penso che ci sia decisamente spazio per un approccio minimale e indipendente dal feed che potrebbe vivere sia come una piccola estensione del plugin Calendar/Event sia come un leggero job core.

Affinché una PR sia generalmente utile, la chiave sembra essere rendere l’importatore basato su adattatori anziché specifico per il feed. Qualcosa come:

  • Ogni feed definisce un piccolo adattatore (potrebbe essere Python, YAML o Ruby) che mappa i campi ICS → campi del topic di Discourse (title, body, tags, start, end, location, ecc.).
  • Il core gestisce l’idempotenza (mapping UID ↔ ID del topic), la cancellazione (STATUS:CANCELLED) e le modifiche silenziose (aggiornamento senza incrementare Latest).
  • Plugin o impostazioni del sito potrebbero configurare l’intervallo di polling, le mappature dei tag e la policy di incremento (always, never, on major change).

In questo modo, le istituzioni con feed rumorosi o complessi (orari universitari, prenotazioni di aule, calendari Outlook, ecc.) possono fornire un adattatore adatto ai loro dati senza codificare nulla nel core.

Se c’è interesse, sarei felice di delineare quell’interfaccia adattatore o prototipare l’helper core “ICS upsert” come un job Ruby su cui altri possano costruire, in modo che questo possa evolversi gradualmente da script Python autonomi a qualcosa di manutenibile e generico all’interno dell’ecosistema di Discourse.

2 Mi Piace