Move RESTError to restapi.go (#1130)
This commit is contained in:
parent
9586f7fb38
commit
12edb3b8c7
2 changed files with 34 additions and 47 deletions
34
restapi.go
34
restapi.go
|
@ -39,6 +39,40 @@ var (
|
||||||
ErrUnauthorized = errors.New("HTTP request was unauthorized. This could be because the provided token was not a bot token. Please add \"Bot \" to the start of your token. https://discord.com/developers/docs/reference#authentication-example-bot-token-authorization-header")
|
ErrUnauthorized = errors.New("HTTP request was unauthorized. This could be because the provided token was not a bot token. Please add \"Bot \" to the start of your token. https://discord.com/developers/docs/reference#authentication-example-bot-token-authorization-header")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
}
|
||||||
|
|
||||||
|
// newRestError returns a new REST API error.
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error returns a Rest API Error with its status code and body.
|
||||||
|
func (r RESTError) Error() string {
|
||||||
|
return "HTTP " + r.Response.Status + ", " + string(r.ResponseBody)
|
||||||
|
}
|
||||||
|
|
||||||
// Request is the same as RequestWithBucketID but the bucket id is the same as the urlStr
|
// Request is the same as RequestWithBucketID but the bucket id is the same as the urlStr
|
||||||
func (s *Session) Request(method, urlStr string, data interface{}) (response []byte, err error) {
|
func (s *Session) Request(method, urlStr string, data interface{}) (response []byte, err error) {
|
||||||
return s.RequestWithBucketID(method, urlStr, data, strings.SplitN(urlStr, "?", 2)[0])
|
return s.RequestWithBucketID(method, urlStr, data, strings.SplitN(urlStr, "?", 2)[0])
|
||||||
|
|
47
types.go
47
types.go
|
@ -1,47 +0,0 @@
|
||||||
// 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)
|
|
||||||
}
|
|
Loading…
Reference in a new issue