12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // 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"
- "fmt"
- "net/http"
- "time"
- )
- // Timestamp stores a timestamp, as sent by the Discord API.
- type Timestamp string
- // Parse parses a timestamp string into a time.Time object.
- // The only time this can fail is if Discord changes their timestamp format.
- func (t Timestamp) Parse() (time.Time, error) {
- return time.Parse(time.RFC3339, string(t))
- }
- // 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 fmt.Sprintf("HTTP %s, %s", r.Response.Status, r.ResponseBody)
- }
|