Fix unmarshall error with Invite, improve error logging.

This commit is contained in:
Chris Rhodes 2016-04-23 10:59:38 -07:00
parent 24e7f04e0e
commit 8be21fb539
3 changed files with 9 additions and 8 deletions

View file

@ -1108,10 +1108,10 @@ func (s *Session) ChannelInvites(channelID string) (st []*Invite, err error) {
func (s *Session) ChannelInviteCreate(channelID string, i Invite) (st *Invite, err error) {
data := struct {
MaxAge int `json:"max_age"`
MaxUses int `json:"max_uses"`
Temporary bool `json:"temporary"`
XKCDPass bool `json:"xkcdpass"`
MaxAge int `json:"max_age"`
MaxUses int `json:"max_uses"`
Temporary bool `json:"temporary"`
XKCDPass string `json:"xkcdpass"`
}{i.MaxAge, i.MaxUses, i.Temporary, i.XkcdPass}
body, err := s.Request("POST", CHANNEL_INVITES(channelID), data)

View file

@ -107,7 +107,7 @@ type Invite struct {
MaxAge int `json:"max_age"`
Uses int `json:"uses"`
MaxUses int `json:"max_uses"`
XkcdPass bool `json:"xkcdpass"`
XkcdPass string `json:"xkcdpass"`
Revoked bool `json:"revoked"`
Temporary bool `json:"temporary"`
}

View file

@ -15,6 +15,7 @@ import (
"compress/zlib"
"encoding/json"
"errors"
"fmt"
"io"
"log"
"net/http"
@ -256,7 +257,7 @@ func (s *Session) event(messageType int, message []byte) {
if messageType == 2 {
z, err1 := zlib.NewReader(reader)
if err1 != nil {
log.Println(err1)
log.Println(fmt.Sprintf("Error uncompressing message type %d: %s", messageType, err1))
return
}
defer func() {
@ -271,7 +272,7 @@ func (s *Session) event(messageType int, message []byte) {
var e *Event
decoder := json.NewDecoder(reader)
if err = decoder.Decode(&e); err != nil {
log.Println(err)
log.Println(fmt.Sprintf("Error decoding message type %d: %s", messageType, err))
return
}
@ -287,7 +288,7 @@ func (s *Session) event(messageType int, message []byte) {
// Attempt to unmarshal our event.
// If there is an error we should handle the event itself.
if err = unmarshal(e.RawData, i); err != nil {
log.Println("Unable to unmarshal event data.", err)
log.Println(fmt.Sprintf("Unable to unmarshal event %s data: %s", e.Type, err))
// Ready events must fire, even if they are empty.
if e.Type != "READY" {
i = nil