代码拉取完成,页面将自动刷新
同步操作将从 开源中国/mcp-gitee 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package utils
import (
"encoding/json"
"fmt"
)
type ErrorType string
const (
// ErrorTypeNetwork Network error
ErrorTypeNetwork ErrorType = "network_error"
// ErrorTypeAPI API error
ErrorTypeAPI ErrorType = "api_error"
// ErrorTypeAuth Auth error
ErrorTypeAuth ErrorType = "auth_error"
// ErrorTypeParam param error
ErrorTypeParam ErrorType = "param_error"
// ErrorTypeInternal Internal error
ErrorTypeInternal ErrorType = "internal_error"
)
type GiteeError struct {
Type ErrorType `json:"type"`
Message string `json:"message"`
Code int `json:"code,omitempty"`
Details string `json:"details,omitempty"`
}
func (e *GiteeError) Error() string {
if e.Details != "" {
return fmt.Sprintf("[%s] %s (code: %d, details: %s)", e.Type, e.Message, e.Code, e.Details)
}
return fmt.Sprintf("[%s] %s (code: %d)", e.Type, e.Message, e.Code)
}
func NewNetworkError(err error) *GiteeError {
return &GiteeError{
Type: ErrorTypeNetwork,
Message: "Network communication error",
Details: err.Error(),
}
}
func NewAPIError(statusCode int, body []byte) *GiteeError {
var details string
var apiErr struct {
Message string `json:"message"`
Error string `json:"error"`
}
if err := json.Unmarshal(body, &apiErr); err == nil {
if apiErr.Message != "" {
details = apiErr.Message
} else if apiErr.Error != "" {
details = apiErr.Error
}
}
if details == "" {
details = string(body)
}
return &GiteeError{
Type: ErrorTypeAPI,
Message: fmt.Sprintf("API returned error status: %d", statusCode),
Code: statusCode,
Details: details,
}
}
func NewAuthError() *GiteeError {
return &GiteeError{
Type: ErrorTypeAuth,
Message: "Authentication failed, please check your access token",
}
}
func NewParamError(param string, details string) *GiteeError {
return &GiteeError{
Type: ErrorTypeParam,
Message: fmt.Sprintf("Invalid parameter: %s", param),
Details: details,
}
}
func NewInternalError(err error) *GiteeError {
return &GiteeError{
Type: ErrorTypeInternal,
Message: "Internal server error",
Details: err.Error(),
}
}
func IsAuthError(err error) bool {
if giteeErr, ok := err.(*GiteeError); ok {
return giteeErr.Type == ErrorTypeAuth
}
return false
}
func IsAPIError(err error) bool {
if giteeErr, ok := err.(*GiteeError); ok {
return giteeErr.Type == ErrorTypeAPI
}
return false
}
func IsNetworkError(err error) bool {
if giteeErr, ok := err.(*GiteeError); ok {
return giteeErr.Type == ErrorTypeNetwork
}
return false
}
func IsParamError(err error) bool {
if giteeErr, ok := err.(*GiteeError); ok {
return giteeErr.Type == ErrorTypeParam
}
return false
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。