@@ -4,13 +4,15 @@ import (
44 "bytes"
55 "fmt"
66 "io/ioutil"
7+ "os"
78 "sort"
89 "strings"
910 "text/template"
1011 "time"
1112
1213 "github.com/cloudnative-id/community-operator/config"
1314 communityv1alpha1 "github.com/cloudnative-id/community-operator/pkg/apis/community/v1alpha1"
15+ log "github.com/sirupsen/logrus"
1416 "sigs.k8s.io/yaml"
1517)
1618
@@ -23,30 +25,34 @@ type Dispatcher struct {
2325func (dp * Dispatcher ) getConfig () {
2426 configFile , err := ioutil .ReadFile ("/etc/community-operator/community-operator-config.yaml" )
2527 if err != nil {
26- panic (err )
28+ log . Fatal (err )
2729 }
2830
2931 err = yaml .Unmarshal (configFile , & dp .config )
3032 if err != nil {
31- panic (err )
33+ log . Fatal (err )
3234 }
3335}
3436
3537func (dp * Dispatcher ) Start () {
38+ log .SetFormatter (& log.JSONFormatter {})
39+ log .SetOutput (os .Stdout )
40+
3641 dp .getConfig ()
3742}
3843
39- func (dp * Dispatcher ) sendTelegram (message bytes.Buffer , picture string ) {
40- _ , err := dp .telegramDispatcher .SendMessage (message )
44+ func (dp * Dispatcher ) sendTelegram (message bytes.Buffer , picture string , chatType string ) {
45+ _ , err := dp .telegramDispatcher .SendMessage (message , chatType )
4146 if err != nil {
42- panic (err )
47+ log . Fatal (err )
4348 }
4449
4550 time .Sleep (10 * time .Second )
4651
47- _ , err = dp .telegramDispatcher .SendImage (picture )
52+ _ , err = dp .telegramDispatcher .SendImage (picture , chatType )
4853 if err != nil {
49- panic (err )
54+ log .Error (err )
55+ log .Error ("Cannot send image, skipping" )
5056 }
5157}
5258
@@ -56,15 +62,15 @@ func (dp *Dispatcher) sendTwitter(message bytes.Buffer, picture string) {
5662
5763 id , err := dp .twitterDispacher .SendMessage (msg [0 ])
5864 if err != nil {
59- panic (err )
65+ log . Fatal (err )
6066 }
6167
6268 time .Sleep (5 * time .Second )
6369
6470 for i := 1 ; i < len (msg ); i ++ {
6571 id , err = dp .twitterDispacher .ReplyMessage (msg [i ], id )
6672 if err != nil {
67- panic (err )
73+ log . Fatal (err )
6874 }
6975
7076 time .Sleep (5 * time .Second )
@@ -86,12 +92,12 @@ func populateTemplate(dispatcher string, data interface{}) bytes.Buffer {
8692
8793 tpl , err := template .ParseFiles (tmpl )
8894 if err != nil {
89- panic (err )
95+ log . Fatal (err )
9096 }
9197
9298 err = tpl .Execute (& output , data )
9399 if err != nil {
94- panic (err )
100+ log . Fatal (err )
95101 }
96102
97103 return output
@@ -107,7 +113,14 @@ func (dp *Dispatcher) SendWeekly(weeklyData communityv1alpha1.WeeklySpec) {
107113 dp .telegramDispatcher .Start (config .Token , config .ChatID )
108114
109115 telegramData := populateTemplate ("telegram" , weeklyData )
110- dp .sendTelegram (telegramData , weeklyData .Image )
116+ dp .sendTelegram (telegramData , weeklyData .Image , "group" )
117+ }
118+
119+ for _ , config := range dp .config .Telegram .Channel {
120+ dp .telegramDispatcher .Start (config .Token , config .Username )
121+
122+ telegramData := populateTemplate ("telegram" , weeklyData )
123+ dp .sendTelegram (telegramData , weeklyData .Image , "channel" )
111124 }
112125 }
113126
@@ -127,7 +140,14 @@ func (dp *Dispatcher) SendMeetup(meetupData communityv1alpha1.MeetupSpec) {
127140 dp .telegramDispatcher .Start (config .Token , config .ChatID )
128141
129142 telegramData := populateTemplate ("telegram" , meetupData )
130- dp .sendTelegram (telegramData , meetupData .Image )
143+ dp .sendTelegram (telegramData , meetupData .Image , "group" )
144+ }
145+
146+ for _ , config := range dp .config .Telegram .Channel {
147+ dp .telegramDispatcher .Start (config .Token , config .Username )
148+
149+ telegramData := populateTemplate ("telegram" , meetupData )
150+ dp .sendTelegram (telegramData , meetupData .Image , "channel" )
131151 }
132152 }
133153
@@ -147,7 +167,14 @@ func (dp *Dispatcher) SendAnnouncement(announcementData communityv1alpha1.Announ
147167 dp .telegramDispatcher .Start (config .Token , config .ChatID )
148168
149169 telegramData := populateTemplate ("telegram" , announcementData )
150- dp .sendTelegram (telegramData , announcementData .Image )
170+ dp .sendTelegram (telegramData , announcementData .Image , "group" )
171+ }
172+
173+ for _ , config := range dp .config .Telegram .Channel {
174+ dp .telegramDispatcher .Start (config .Token , config .Username )
175+
176+ telegramData := populateTemplate ("telegram" , announcementData )
177+ dp .sendTelegram (telegramData , announcementData .Image , "channel" )
151178 }
152179 }
153180
0 commit comments