diff --git a/restapi.go b/restapi.go index 868d5aa..e970a45 100644 --- a/restapi.go +++ b/restapi.go @@ -13,6 +13,7 @@ package discordgo import ( "bytes" "encoding/json" + "errors" "fmt" "image" _ "image/jpeg" // For JPEG decoding @@ -24,6 +25,8 @@ import ( "time" ) +var ErrJSONUnmarshal = errors.New("json unmarshal") + // Request makes a (GET/POST/...) Requests to Discord REST API. // All the other Discord REST Calls in this file use this function. func (s *Session) Request(method, urlStr string, data interface{}) (response []byte, err error) { @@ -112,6 +115,15 @@ func (s *Session) Request(method, urlStr string, data interface{}) (response []b return } +func (s *Session) Unmarshal(data []byte, v interface{}) error { + err := json.Unmarshal(data, v) + if err != nil { + return ErrJSONUnmarshal + } + + return nil +} + // ------------------------------------------------------------------------------------------------ // Functions specific to Discord Sessions // ------------------------------------------------------------------------------------------------ @@ -133,7 +145,7 @@ func (s *Session) Login(email string, password string) (token string, err error) Token string `json:"token"` }{} - err = json.Unmarshal(response, &temp) + err = s.Unmarshal(response, &temp) if err != nil { return } @@ -160,7 +172,7 @@ func (s *Session) Register(username string) (token string, err error) { Token string `json:"token"` }{} - err = json.Unmarshal(response, &temp) + err = s.Unmarshal(response, &temp) if err != nil { return } @@ -202,7 +214,7 @@ func (s *Session) User(userID string) (st *User, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -245,7 +257,7 @@ func (s *Session) UserUpdate(email, password, username, avatar, newPassword stri return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -257,7 +269,7 @@ func (s *Session) UserSettings() (st *Settings, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -270,7 +282,7 @@ func (s *Session) UserChannels() (st []*Channel, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -287,7 +299,7 @@ func (s *Session) UserChannelCreate(recipientID string) (st *Channel, err error) return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -299,7 +311,7 @@ func (s *Session) UserGuilds() (st []*Guild, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -316,7 +328,7 @@ func (s *Session) Guild(guildID string) (st *Guild, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -333,7 +345,7 @@ func (s *Session) GuildCreate(name string) (st *Guild, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -351,7 +363,7 @@ func (s *Session) GuildEdit(guildID, name string) (st *Guild, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -364,7 +376,7 @@ func (s *Session) GuildDelete(guildID string) (st *Guild, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -378,7 +390,7 @@ func (s *Session) GuildBans(guildID string) (st []*User, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -427,7 +439,7 @@ func (s *Session) GuildChannels(guildID string) (st []*Channel, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -448,7 +460,7 @@ func (s *Session) GuildChannelCreate(guildID, name, ctype string) (st *Channel, return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -460,7 +472,7 @@ func (s *Session) GuildInvites(guildID string) (st []*Invite, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -482,7 +494,7 @@ func (s *Session) GuildInviteCreate(guildID string, i *Invite) (st *Invite, err return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -494,7 +506,7 @@ func (s *Session) GuildRoles(guildID string) (st []*Role, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return // TODO return pointer } @@ -507,7 +519,7 @@ func (s *Session) GuildRoleCreate(guildID string) (st *Role, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -527,7 +539,7 @@ func (s *Session) GuildRoleEdit(guildID, roleID, name string, color int, hoist b return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -540,7 +552,7 @@ func (s *Session) GuildRoleReorder(guildID string, roles []Role) (st []*Role, er return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -565,7 +577,7 @@ func (s *Session) Channel(channelID string) (st *Channel, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -583,7 +595,7 @@ func (s *Session) ChannelEdit(channelID, name string) (st *Channel, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -596,7 +608,7 @@ func (s *Session) ChannelDelete(channelID string) (st *Channel, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -638,7 +650,7 @@ func (s *Session) ChannelMessages(channelID string, limit int, beforeID int, aft return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -669,7 +681,7 @@ func (s *Session) ChannelMessageSend(channelID string, content string) (st *Mess return } - err = json.Unmarshal(response, &st) + err = s.Unmarshal(response, &st) return } @@ -688,7 +700,7 @@ func (s *Session) ChannelMessageEdit(channelID, messageID, content string) (st * return } - err = json.Unmarshal(response, &st) + err = s.Unmarshal(response, &st) return } @@ -708,7 +720,7 @@ func (s *Session) ChannelInvites(channelID string) (st []*Invite, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -730,7 +742,7 @@ func (s *Session) ChannelInviteCreate(channelID string, i Invite) (st *Invite, e return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -771,7 +783,7 @@ func (s *Session) Invite(inviteID string) (st *Invite, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -784,7 +796,7 @@ func (s *Session) InviteDelete(inviteID string) (st *Invite, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -797,7 +809,7 @@ func (s *Session) InviteAccept(inviteID string) (st *Invite, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -813,7 +825,7 @@ func (s *Session) VoiceRegions() (st []*VoiceRegion, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -825,7 +837,7 @@ func (s *Session) VoiceICE() (st *VoiceICE, err error) { return } - err = json.Unmarshal(body, &st) + err = s.Unmarshal(body, &st) return } @@ -845,7 +857,7 @@ func (s *Session) Gateway() (gateway string, err error) { URL string `json:"url"` }{} - err = json.Unmarshal(response, &temp) + err = s.Unmarshal(response, &temp) if err != nil { return } diff --git a/wsapi.go b/wsapi.go index fc50953..959e630 100644 --- a/wsapi.go +++ b/wsapi.go @@ -11,7 +11,6 @@ package discordgo import ( - "encoding/json" "fmt" "runtime" "time" @@ -166,7 +165,7 @@ func (s *Session) Listen() (err error) { // somewhere. func unmarshalEvent(event *Event, i interface{}) (err error) { - if err = json.Unmarshal(event.RawData, i); err != nil { + if err = s.Unmarshal(event.RawData, i); err != nil { fmt.Println(event.Type, err) printJSON(event.RawData) // TODO: Better error loggingEvent. } @@ -187,7 +186,7 @@ func (s *Session) event(messageType int, message []byte) (err error) { } var e *Event - if err = json.Unmarshal(message, &e); err != nil { + if err = s.Unmarshal(message, &e); err != nil { fmt.Println(err) return }