Files
Sanaei f727d04f65
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
v3.7.0
2026-08-24 15:07:15 +02:00

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."
}