diff options
Diffstat (limited to 'vendor/github.com/matterbridge/gozulipbot/bot.go')
-rw-r--r-- | vendor/github.com/matterbridge/gozulipbot/bot.go | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/vendor/github.com/matterbridge/gozulipbot/bot.go b/vendor/github.com/matterbridge/gozulipbot/bot.go index f5644a29..ebcf015a 100644 --- a/vendor/github.com/matterbridge/gozulipbot/bot.go +++ b/vendor/github.com/matterbridge/gozulipbot/bot.go @@ -10,14 +10,15 @@ import ( ) type Bot struct { - APIKey string - APIURL string - Email string - Queues []*Queue - Streams []string - Client Doer - Backoff time.Duration - Retries int64 + APIKey string + APIURL string + Email string + Queues []*Queue + Streams []string + Client Doer + Backoff time.Duration + Retries int64 + UserAgent string } type Doer interface { @@ -117,6 +118,11 @@ func (b *Bot) Subscribe(streams []string) (*http.Response, error) { body := "subscriptions=" + string(bodyBts) req, err := b.constructRequest("POST", "users/me/subscriptions", body) + if b.UserAgent != "" { + req.Header.Set("User-Agent", b.UserAgent) + } else { + req.Header.Set("User-Agent", fmt.Sprintf("gozulipbot/%s", Release)) + } if err != nil { return nil, err } @@ -174,6 +180,20 @@ func (b *Bot) RegisterEvents(ets []EventType, n Narrow) (*Queue, error) { return nil, err } defer resp.Body.Close() + if resp.StatusCode != 200 { + // Try to parse the error out of the body + body, err := ioutil.ReadAll(resp.Body) + if err == nil { + var jsonErr map[string]string + err = json.Unmarshal(body, &jsonErr) + if err == nil { + if msg, ok := jsonErr["msg"]; ok { + return nil, fmt.Errorf("Failed to register: %s", msg) + } + } + } + return nil, fmt.Errorf("Got non-200 response code when registering: %d", resp.StatusCode) + } body, err := ioutil.ReadAll(resp.Body) if err != nil { |