add @ prefix for non-integer tg channelID #255

This commit is contained in:
Umputun
2019-01-21 13:28:03 -06:00
parent dbc664e102
commit 1a78c6eec6
2 changed files with 15 additions and 4 deletions
+9 -4
View File
@@ -7,6 +7,7 @@ import (
"fmt"
"html"
"net/http"
"strconv"
"time"
log "github.com/go-pkgz/lgr"
@@ -16,10 +17,10 @@ import (
// Telegram implements notify.Destination for telegram
type Telegram struct {
channelID string
token string
apiPrefix string
timeout time.Duration
channelID string // unique identifier for the target chat or username of the target channel (in the format @channelusername)
token string
apiPrefix string
timeout time.Duration
}
const telegramTimeOut = 5000 * time.Millisecond
@@ -28,6 +29,10 @@ const telegramAPIPrefix = "https://api.telegram.org/bot"
// NewTelegram makes telegram bot for notifications
func NewTelegram(token string, channelID string, timeout time.Duration, api string) (*Telegram, error) {
if _, err := strconv.ParseInt(channelID, 10, 64); err != nil {
channelID = "@" + channelID // if channelID not a number enforce @ prefix
}
res := Telegram{channelID: channelID, token: token, apiPrefix: api, timeout: timeout}
if res.apiPrefix == "" {
res.apiPrefix = telegramAPIPrefix
+6
View File
@@ -21,6 +21,7 @@ func TestTelegram_New(t *testing.T) {
tb, err := NewTelegram("good-token", "remark_test", 2*time.Second, ts.URL+"/")
assert.NoError(t, err)
assert.NotNil(t, tb)
assert.Equal(t, "@remark_test", tb.channelID, "@ added")
st := time.Now()
_, err = NewTelegram("bad-resp", "remark_test", 2*time.Second, ts.URL+"/")
@@ -42,6 +43,11 @@ func TestTelegram_New(t *testing.T) {
_, err = NewTelegram("good-token", "remark_test", 0, ts.URL+"/")
assert.NoError(t, err, "0 timeout allowed as default")
tb, err = NewTelegram("good-token", "1234567890", 2*time.Second, ts.URL+"/")
assert.NoError(t, err)
assert.NotNil(t, tb)
assert.Equal(t, "1234567890", tb.channelID, "no @ prefix")
}
func TestTelegram_Send(t *testing.T) {