diff options
Diffstat (limited to 'vendor/github.com/matterbridge/gozulipbot')
-rw-r--r-- | vendor/github.com/matterbridge/gozulipbot/bot.go | 36 | ||||
-rw-r--r-- | vendor/github.com/matterbridge/gozulipbot/queue.go | 2 |
2 files changed, 30 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 { diff --git a/vendor/github.com/matterbridge/gozulipbot/queue.go b/vendor/github.com/matterbridge/gozulipbot/queue.go index 77aef7fc..b90205c1 100644 --- a/vendor/github.com/matterbridge/gozulipbot/queue.go +++ b/vendor/github.com/matterbridge/gozulipbot/queue.go @@ -151,6 +151,8 @@ func (q *Queue) GetEvents() ([]EventMessage, error) { switch { case resp.StatusCode == 429: return nil, BackoffError + case resp.StatusCode == 401: + return nil, UnauthorizedError case resp.StatusCode == 403: return nil, UnauthorizedError case resp.StatusCode >= 400: |