Print status code

This commit is contained in:
rxdn 2024-12-01 11:15:24 +00:00
parent a1eae9b4bb
commit 6d073dc216
2 changed files with 21 additions and 11 deletions

View File

@ -1,10 +1,15 @@
package app package app
import "fmt" import (
"errors"
"fmt"
"github.com/rxdn/gdl/rest/request"
)
type ApiError struct { type ApiError struct {
InternalError error InternalError error
ExternalMessage string ExternalMessage string
stacktrace error
} }
var _ error = (*ApiError)(nil) var _ error = (*ApiError)(nil)
@ -21,7 +26,13 @@ func NewServerError(internalError error) *ApiError {
} }
func (e *ApiError) Error() string { func (e *ApiError) Error() string {
return fmt.Sprintf("internal error: %v, external message: %s", e.InternalError, e.ExternalMessage) var restError request.RestError
if errors.As(e.InternalError, &restError) {
return fmt.Sprintf("internal error: %v, external message: %s, rest error: Discord returned HTTP %d: %s",
e.InternalError, e.ExternalMessage, restError.StatusCode, restError.ApiError.Message)
} else {
return fmt.Sprintf("internal error: %v, external message: %s", e.InternalError, e.ExternalMessage)
}
} }
func (e *ApiError) Unwrap() error { func (e *ApiError) Unwrap() error {

View File

@ -97,7 +97,6 @@ func DeletePanel(c *gin.Context) {
} }
messageData := multiPanelIntoMessageData(multiPanel, premiumTier > premium.None) messageData := multiPanelIntoMessageData(multiPanel, premiumTier > premium.None)
messageId, err := messageData.send(botContext, panels) messageId, err := messageData.send(botContext, panels)
if err != nil { if err != nil {
var unwrapped request.RestError var unwrapped request.RestError
@ -106,16 +105,16 @@ func DeletePanel(c *gin.Context) {
return return
} }
// TODO: nil message ID? // TODO: nil message ID?
} } else {
if err := database.Client.MultiPanels.UpdateMessageId(c, multiPanel.Id, messageId); err != nil {
_ = c.AbortWithError(http.StatusInternalServerError, app.NewServerError(err))
return
}
if err := database.Client.MultiPanels.UpdateMessageId(c, multiPanel.Id, messageId); err != nil { // Delete old panel
_ = c.AbortWithError(http.StatusInternalServerError, app.NewServerError(err)) // TODO: Use proper context
return _ = rest.DeleteMessage(c, botContext.Token, botContext.RateLimiter, multiPanel.ChannelId, multiPanel.MessageId)
} }
// Delete old panel
// TODO: Use proper context
_ = rest.DeleteMessage(c, botContext.Token, botContext.RateLimiter, multiPanel.ChannelId, multiPanel.MessageId)
} }
c.JSON(200, utils.SuccessResponse) c.JSON(200, utils.SuccessResponse)