1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // Discordgo - Discord bindings for Go
- // Available at https://github.com/bwmarrin/discordgo
- // Copyright 2015-2016 Bruce Marriner <bruce@sqls.net>. 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)
- }
|