LogNotifier subscribes (Drop overflow) and emits stdlib Log lines with structured kwargs (credential_id, rotation_id, severity, etc.) suitable for downstream ingestion by journald/vector/fluentd. Telegram is a thin HTTP::Client wrapper for sendMessage and getUpdates. TelegramSubscriber sends emoji-prefixed alerts on RotationFailed, DriftDetected, PolicyViolation, AlertRaised; success notifications gated by the notify_on_success flag. Errors are swallowed so a flaky bot never blocks the engine. TelegramBot does long-polling getUpdates and dispatches commands: - viewer tier: /status /queue /history /alerts /help - operator tier: viewer + /rotate + /snooze ACL is by chat_id allowlist (bot token + chat IDs in env vars). /rotate publishes RotationScheduled to the bus. 11 unit specs cover send_message + error handling + getUpdates parsing, subscriber dispatch, success-suppression flag, and bot ACL enforcement (unauthorized / viewer-blocked-from-mutations / operator-can-rotate). |
||
|---|---|---|
| .. | ||
| .gitkeep | ||
| log_notifier_spec.cr | ||
| telegram_bot_spec.cr | ||
| telegram_spec.cr | ||