// Discordgo - Discord bindings for Go // Available at https://github.com/bwmarrin/discordgo // Copyright 2015-2016 Bruce Marriner . All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // This file contains custom types, currently only a timestamp wrapper. package discordgo import ( "encoding/json" "net/http" ) // RESTError stores error information about a request with a bad response code. // Message is not always present, there are cases where api calls can fail // without returning a json message. type RESTError struct { Request *http.Request Response *http.Response ResponseBody []byte Message *APIErrorMessage // Message may be nil. } func newRestError(req *http.Request, resp *http.Response, body []byte) *RESTError { restErr := &RESTError{ Request: req, Response: resp, ResponseBody: body, } // Attempt to decode the error and assume no message was provided if it fails var msg *APIErrorMessage err := json.Unmarshal(body, &msg) if err == nil { restErr.Message = msg } return restErr } func (r RESTError) Error() string { return "HTTP " + r.Response.Status + ", " + string(r.ResponseBody) }