https://github.com/rustlanges/cfworker-calendar-event
Un worker que genera las notificaciones al cangrebot sobre los eventos del calendario
https://github.com/rustlanges/cfworker-calendar-event
Last synced: 2 months ago
JSON representation
Un worker que genera las notificaciones al cangrebot sobre los eventos del calendario
- Host: GitHub
- URL: https://github.com/rustlanges/cfworker-calendar-event
- Owner: RustLangES
- License: mit
- Created: 2024-05-08T04:28:37.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-28T04:21:26.000Z (over 1 year ago)
- Last Synced: 2024-05-28T13:15:46.621Z (over 1 year ago)
- Language: Rust
- Size: 53.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
# Calendar Events Worker
Este es un worker de Cloudflare que se ejecuta diariamente a las 22:00 UTC-0. Su función es obtener los eventos proximos de nuestro calendario de google y luego los envía en formato Markdown a un endpoint definido en la variable de entorno `ENDPOINT`. En nuestro caso, este punto final corresponde a un bot de Discord que notifica a las personaes interesadas con el rol de `@anuncios` dentro de nuestro servidor de discord.
## Funcionamiento
1. El worker se activa automáticamente a las 22:00 UTC-0 gracias a un disparador de programación (schedule trigger) en Cloudflare.
2. Se realiza una llamada a la API de Google Calendar para obtener los detalles de los eventos.
3. Se envía una solicitud POST a la API definido en la variable de entorno `ENDPOINT` con los datos del reto en formato Markdown.
4. Se notifica a los roles y personas acerca del evento proximo.
## Configuración
### Requisitos
Para construir y desplegar este proyecto, necesitarás lo siguiente:
- [Rust](https://rust-lang.org)
- [wrangler](https://developers.cloudflare.com/workers/wrangler/install-and-update/)
- [worker-build](https://crates.io/crates/worker-build)
- [wasm-pack](https://rustwasm.github.io/wasm-pack/)
### Variables de Entorno
> [!IMPORTANT]
> Durante la etapa de desarrollo la variable de ENDPOINT puedes modificarla en el archivo `wrangler.toml`
> Sin embargo las variables sensibles deben ir en el archivo `.dev.vars`
- `GOOGLE_APIKEY`: Token de API de Google para el calendario.
- `GOOGLE_CALENDAR_ID`: ID del calendario de Google a seguir.
- `ENDPOINT`: URL de la API a la que se enviarán los datos procesados de los calendarios.
- `CHANNEL_ID`: Corresponde al canal principal de anuncios.
- `BOT_CHANNEL_ID`: Corresponde al segundo canal en donde se haran los anuncios de media hora antes.
- `ROLES`: Los roles a los que se hara mencion en discord, deben estar separados por `;`, ejemplo: `1923764917246;12987469283746;1923746927346`
- `BOT_APIKEY`: Solo es necesario para nuestro caso que tenemos limitado nuestro endpoint para usuarios permitidos
### Pruebas Locales
> [!NOTE]
> Tambien puedes correr los tests como si fuera una aplicacion normal de Rust
> Con el comando de `cargo test`
Para probar el worker localmente, solo necesitas configurar la variable de entorno `ENDPOINT` en el archivo `wrangler.toml`. Esto es necesario solo si quieres usar un punto final diferente al que ya está configurado.
### Despliegue Automático
Este proyecto está configurado para desplegar automáticamente utilizando los flujos de trabajo de GitHub Actions. Para que funcione correctamente, debes configurar los siguientes secretos en GitHub:
- `CLOUDFLARE_ACCOUNT_ID`: ID de tu cuenta de Cloudflare.
- `CLOUDFLARE_API_TOKEN`: Token de API de Cloudflare.
- `GOOGLE_APIKEY`: Token de API de Google para el calendario.
- `GOOGLE_CALENDAR_ID`: ID del calendario de Google a seguir.
- `ENDPOINT`: URL de la API a la que se enviarán los datos procesados de los calendarios.
- `CHANNEL_ID`: Corresponde al canal principal de anuncios.
- `BOT_CHANNEL_ID`: Corresponde al segundo canal en donde se haran los anuncios de media hora antes.
- `ROLES`: Los roles a los que se hara mencion en discord, deben estar separados por `;`, ejemplo: `1923764917246;12987469283746;1923746927346`
- `BOT_APIKEY`: Solo es necesario para nuestro caso que tenemos limitado nuestro endpoint para usuarios permitidos