ICS → Discourse-importeur via REST API

Dat is een goede vraag, Nathan — en ik denk dat er zeker ruimte is voor een minimale, feed-agnostische aanpak die ofwel als een kleine uitbreiding op de Calendar/Event-plugin kan leven, of als een lichtgewicht core job.

Om een PR algemeen bruikbaar te maken, lijkt de sleutel te liggen in het maken van de importer adapter-gebaseerd in plaats van feed-specifiek. Iets als:

  • Elke feed definieert een kleine adapter (kan Python, YAML of Ruby zijn) die ICS-velden toewijst aan Discourse-topicvelden (title, body, tags, start, end, location, etc.).
  • Core beheert idempotentie (UID ↔ topic ID mapping), annulering (STATUS:CANCELLED), en stille bewerkingen (update zonder de Latest te bumpen).
  • Plugins of site-instellingen kunnen het polling-interval, tag-mappings en de bump-policy (always, never, on major change) configureren.

Op die manier kunnen instellingen met ruisige of complexe feeds (universiteitstijdschema’s, kamerboekingen, Outlook-agenda’s, etc.) een adapter bieden die geschikt is voor hun gegevens, zonder iets in de core te hardcoderen.

Als er interesse is, schets ik graag die adapterinterface of prototypeer ik de core “ICS upsert”-helper als een Ruby-job waar anderen op kunnen voortbouwen — zodat dit geleidelijk kan evolueren van standalone Python-scripts naar iets onderhoudbaars en algemeens binnen het ecosysteem van Discourse.

2 likes