Release 3X-UI for Docker / build (push) Canceled after 0s
Release 3X-UI / build (386) (push) Canceled after 0s
Release 3X-UI / build (amd64) (push) Canceled after 0s
Release 3X-UI / build (arm64) (push) Canceled after 0s
Release 3X-UI / build (armv5) (push) Canceled after 0s
Release 3X-UI / build (armv6) (push) Canceled after 0s
Release 3X-UI / build (armv7) (push) Canceled after 0s
Release 3X-UI / build (s390x) (push) Canceled after 0s
Release 3X-UI / Build for Windows (amd64) (push) Canceled after 0s
Release 3X-UI / Publish rolling dev release (push) Canceled after 0s
74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package pia
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
const (
|
|
CodeInvalidInput = "pia_invalid_input"
|
|
CodeInvalidCredentials = "pia_invalid_credentials"
|
|
CodeAuthenticationUnavailable = "pia_authentication_unavailable"
|
|
CodeTokenRejected = "pia_token_rejected"
|
|
CodeCatalogUnavailable = "pia_catalog_unavailable"
|
|
CodeCatalogSignatureInvalid = "pia_catalog_signature_invalid"
|
|
CodeCatalogSchemaUnsupported = "pia_catalog_schema_unsupported"
|
|
CodeServerNotFound = "pia_server_not_found"
|
|
CodeTLSValidation = "pia_tls_validation"
|
|
CodeRegistrationRejected = "pia_registration_rejected"
|
|
CodeRegistrationInvalid = "pia_registration_response_invalid"
|
|
CodeTimeout = "pia_timeout"
|
|
CodeCancelled = "pia_cancelled"
|
|
CodeNetworkUnavailable = "pia_network_unavailable"
|
|
)
|
|
|
|
type Error struct {
|
|
Code string
|
|
Message string
|
|
cause error
|
|
}
|
|
|
|
func NewError(code, message string) *Error {
|
|
return &Error{Code: code, Message: message}
|
|
}
|
|
|
|
func WrapError(code, message string, cause error) *Error {
|
|
return &Error{Code: code, Message: message, cause: cause}
|
|
}
|
|
|
|
func (e *Error) Error() string {
|
|
if e == nil {
|
|
return ""
|
|
}
|
|
return fmt.Sprintf("%s: %s", e.Code, e.Message)
|
|
}
|
|
|
|
func (e *Error) Unwrap() error {
|
|
if e == nil {
|
|
return nil
|
|
}
|
|
return e.cause
|
|
}
|
|
|
|
func CodeOf(err error) string {
|
|
if err == nil {
|
|
return ""
|
|
}
|
|
var pe *Error
|
|
if errors.As(err, &pe) && pe != nil {
|
|
return pe.Code
|
|
}
|
|
return CodeNetworkUnavailable
|
|
}
|
|
|
|
func MessageOf(err error) string {
|
|
var pe *Error
|
|
if errors.As(err, &pe) && pe != nil {
|
|
return pe.Message
|
|
}
|
|
if err == nil {
|
|
return ""
|
|
}
|
|
return "An unexpected error occurred."
|
|
}
|