Merge pull request #63 from lupoDharkael/master Added updatesChannel type with Clear() method
Syfaro syfaro@foxpaw.in
Thu, 15 Dec 2016 16:28:47 -0600
M
bot.go
→
bot.go
@@ -7,7 +7,6 @@ "bytes"
"encoding/json" "errors" "fmt" - "github.com/technoweenie/multipartstreamer" "io/ioutil" "log" "net/http"@@ -16,6 +15,8 @@ "os"
"strconv" "strings" "time" + + "github.com/technoweenie/multipartstreamer" ) // BotAPI allows you to interact with the Telegram Bot API.@@ -448,8 +449,9 @@ return info, err
} // GetUpdatesChan starts and returns a channel for getting updates. -func (bot *BotAPI) GetUpdatesChan(config UpdateConfig) (<-chan Update, error) { - updatesChan := make(chan Update, 100) +func (bot *BotAPI) GetUpdatesChan(config UpdateConfig) (updatesChannel, error) { + ch := make(chan Update, 100) + var updatesCh updatesChannel = ch go func() { for {@@ -465,18 +467,19 @@
for _, update := range updates { if update.UpdateID >= config.Offset { config.Offset = update.UpdateID + 1 - updatesChan <- update + ch <- update } } } }() - return updatesChan, nil + return updatesCh, nil } // ListenForWebhook registers a http handler for a webhook. -func (bot *BotAPI) ListenForWebhook(pattern string) <-chan Update { - updatesChan := make(chan Update, 100) +func (bot *BotAPI) ListenForWebhook(pattern string) updatesChannel { + ch := make(chan Update, 100) + var updatesCh updatesChannel = ch http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) { bytes, _ := ioutil.ReadAll(r.Body)@@ -484,10 +487,10 @@
var update Update json.Unmarshal(bytes, &update) - updatesChan <- update + ch <- update }) - return updatesChan + return updatesCh } // AnswerInlineQuery sends a response to an inline query.
M
types.go
→
types.go
@@ -37,6 +37,16 @@ ChosenInlineResult *ChosenInlineResult `json:"chosen_inline_result"`
CallbackQuery *CallbackQuery `json:"callback_query"` } +//updatesChannel is the channel for getting updates. +type updatesChannel <-chan Update + +//Clear discards all the actual incoming updates +func (ch updatesChannel) Clear() { + for len(ch) != 0 { + <-ch + } +} + // User is a user on Telegram. type User struct { ID int `json:"id"`