Реализация
При регистрации пользователь указывает логин и пароль для доступа к своей адресной книге на Яндекс.Почта. Взамен получает ссылку и реквизиты доступа к Cal сервису, который можно поключить в качестве дополнителя календаря в Яндекс.Календарь. Календарь содержит ФИО, дату рождения и отметку о напоминании приближающейся даты.
Доступ к CardCal сервису Яндекс осуществляется посредством webdav (github.com/studio-b12/gowebdav). Информация о контактаъ (ФИО, ДР и uid) хранятся в БД mysql. Вебсервис (CalDav) релизован через gin-gonic (github.com/gin-gonic/gin) с отдачей формируемого на лету iCal календаря (github.com/emersion/go-ical).
Обновление базы дней рождений происходит периодически по таймеру.
-
Особенности реализации:
- Логирование средствами glg (github.com/kpango/glg).
- Чтение конфиг файла (github.com/kkyr/fig) в формате YAML.
- Управляемое закрытие критичных горутин по нажатию Ctrl-C (bool канал и sync.WaitGroup).
- Хранение текстов диалогов бота централизовано.
- Реализован дополнительный механизм контроля (и переподключения при необходимости) наличия соединения с БД.
- В случаей критических ошибок администратору отправляется соответствующее сообщение в телеграм.