ICS → Importador do Discourse via API REST

Essa é uma boa pergunta, Nathan — e acho que definitivamente há espaço para uma abordagem mínima e agnóstica de feed que poderia viver como uma pequena extensão do plugin Calendar/Event ou como um job principal leve.

Para que um PR seja geralmente útil, a chave parece ser tornar o importador baseado em adaptadores em vez de específico de feed. Algo como:

  • Cada feed define um pequeno adaptador (pode ser Python, YAML ou Ruby) que mapeia campos ICS → campos de tópico do Discourse (title, body, tags, start, end, location, etc.).
  • O core lida com idempotência (mapeamento UID ↔ ID do tópico), cancelamento (STATUS:CANCELLED) e edições silenciosas (atualização sem impulsionar o Latest).
  • Plugins ou configurações do site poderiam configurar o intervalo de polling, mapeamentos de tags e política de impulsionamento (always, never, on major change).

Dessa forma, instituições com feeds barulhentos ou complexos (horários universitários, reservas de salas, calendários do Outlook, etc.) podem fornecer um adaptador adequado aos seus dados sem codificar nada no core.

Se houver interesse, ficaria feliz em delinear essa interface de adaptador ou prototipar o helper principal de “ICS upsert” como um job Ruby no qual outros possam se basear — para que isso possa evoluir gradualmente de scripts Python autônomos para algo mantenível e genérico dentro do ecossistema do Discourse.

2 curtidas