Réajouter l'exportation complète ICS

Salut,

Ce serait bien d’avoir le comportement qui a été supprimé dans #231.

Plus précisément, pouvoir pointer un client ical vers events.ics ou équivalent pour obtenir tous les événements sur le site.

De plus, les champs DESCRIPTION, URL et ORGANIZER sont manquants dans le remplacement de download-calendar.js. Les deux premiers sont plus importants pour moi.

Ce serait encore mieux d’intégrer #169 pour ajouter des exportations d’événements « par sujet », mais c’est un plus.

10 « J'aime »

Je serais également très heureux si je pouvais m’abonner aux événements de mon calendrier.

En miroir de /upcoming-events, j’aimerais voir un /upcoming-events.ics.

Mais oui, avoir un moyen de l’obtenir pour une seule catégorie (ou même une seule étiquette ?) serait probablement un excellent ajout aussi.

Peut-être /upcoming-events.ics?category=12 pour filtrer par ID de catégorie ?

2 « J'aime »

+1 sur le flux ICS complet et filtré par sujet.

Je sais que c’est difficile à cause de la confidentialité. Le chemin habituel est qu’un flux de hachage aléatoire représentant un flux par utilisateur est généré.

1 « J'aime »

Euh, quoi… c’est une URL publique au moins avec le calendrier que nous utilisons…

Je tiens à apporter mon soutien à cette fonctionnalité également. J’ai déjà voté sur ce sujet.

Le retour d’une exportation ICS complète du site ou par utilisateur serait extrêmement précieux pour le flux de travail de notre communauté. Y a-t-il une mise à jour concernant la réévaluation de ce qui a été supprimé dans PR #231 ?

S’il y a des préoccupations en matière de confidentialité ou de mise en œuvre, peut-être qu’un flux ICS privé et par utilisateur pourrait être envisagé comme solution.

Merci de prendre cela en considération !

Je ne pense pas qu’il y ait de problèmes de confidentialité, car le point de terminaison .json existe déjà de toute façon, il s’agit simplement d’un formatage différent.

@cvx / @j.jaffeux des réflexions sur le retour de .ics sur la route de l’index des événements (supprimé dans : DEV: Remove old ics code by CvX · Pull Request #231 · discourse/discourse-calendar · GitHub) ? Cela me semble une victoire facile.

Nous faisons déjà :

DiscoursePostEvent::EventFinder.search(current_user, filtered_events_params)

Et nous pouvons avoir un MAX_RESULTS (trié par le plus récent) pour garantir que cela et le .json ne deviennent pas trop volumineux.

2 « J'aime »

J’ai rétabli la possibilité d’exporter les ics via GET /discourse-post-event/events.ics (conformément à DEV: add ical format response for discourse-post-events index route by tyb-talks · Pull Request #35143 · discourse/discourse · GitHub). Notez que ce point de terminaison a une limite stricte de 200 événements. Si votre site a plus d’événements que cela et que vous souhaitez effectuer une exportation complète, vous pouvez itérer en utilisant les paramètres de requête before et after qui acceptent des chaînes de dates. Nous ajouterons la liste complète des paramètres acceptables pour ce point de terminaison à la documentation de l’API en temps voulu.

6 « J'aime »

Merci d’avoir fusionné PR #35143 — c’est formidable de voir l’export .ics de retour officiellement.

Une chose que je voulais vérifier : y a-t-il une possibilité (ou un plan futur) d’authentifier ce flux avec un jeton utilisateur ou une clé API, similaire à la façon dont Discourse gère les flux RSS/Atom privés (/topics/feed.rss?token=…) ?

Pour l’instant, /discourse-post-event/events.ics semble ne fonctionner que pour les événements publics, ce qui signifie qu’Outlook / Google Calendar ne peut pas s’abonner aux catégories privées.

Même une approche légère basée sur des jetons (par utilisateur ou par site, en lecture seule) permettrait d’exposer en toute sécurité des événements privés dans les clients de calendrier sans avoir à transmettre le flux via un script externe.

Est-ce quelque chose qui pourrait être ajouté, ou est-ce déjà possible via un paramètre existant que j’aurais manqué ?

Cela ressemble à une demande de fonctionnalité distincte. Je pense que c’est techniquement réalisable avec une clé API, donc je suppose que la question est de savoir comment vous pourriez facilement faire cela.

Je vais clore ceci et vous laisser ouvrir un nouvel élément à ce sujet.