76 lines
3.4 KiB
Go
76 lines
3.4 KiB
Go
package gosecret
|
|
|
|
import (
|
|
"errors"
|
|
)
|
|
|
|
// General errors.
|
|
var (
|
|
// ErrBadDbusPath indicates an invalid path - either nothing exists at that path or the path is malformed.
|
|
ErrBadDbusPath error = errors.New("invalid dbus path")
|
|
// ErrInvalidProperty indicates a dbus.Variant is not the "real" type expected.
|
|
ErrInvalidProperty error = errors.New("invalid variant type; cannot convert")
|
|
// ErrNoDbusConn gets triggered if a connection to Dbus can't be detected.
|
|
ErrNoDbusConn error = errors.New("no valid dbus connection")
|
|
// ErrMissingPaths gets triggered if one or more Dbus object paths are expected but none/not enough are received.
|
|
ErrMissingPaths error = errors.New("one or more Dbus object paths were expected but an insufficient amount were received")
|
|
// ErrMissingObj gets triggered if one or more gosecret-native objects are expected but none/not enough are received.
|
|
ErrMissingObj error = errors.New("one or more objects were expected but an insufficient amount were received")
|
|
// ErrMissingAttrs gets triggered if attributes were expected but not passed.
|
|
ErrMissingAttrs error = errors.New("attributes must not be empty/nil")
|
|
// ErrDoesNotExist gets triggered if a Collection, Item, etc. is attempted to be fetched but none exists via the specified identifier.
|
|
ErrDoesNotExist error = errors.New("the object under that name/label/alias does not exist")
|
|
)
|
|
|
|
/*
|
|
Translated SecretService errors.
|
|
See https://developer-old.gnome.org/libsecret/unstable/libsecret-SecretError.html#SecretError.
|
|
Used by TranslateError.
|
|
*/
|
|
var (
|
|
ErrUnknownSecretServiceErr error = errors.New("cannot find matching SecretService error")
|
|
ErrSecretServiceProto SecretServiceError = SecretServiceError{
|
|
ErrCode: EnumErrProtocol,
|
|
ErrName: "SECRET_ERROR_PROTOCOL",
|
|
ErrDesc: "an invalid message or data was received from SecretService",
|
|
}
|
|
ErrSecretServiceLocked SecretServiceError = SecretServiceError{
|
|
ErrCode: EnumErrIsLocked,
|
|
ErrName: "SECRET_ERROR_IS_LOCKED",
|
|
ErrDesc: "the item/collection is locked; the specified operation cannot be performed",
|
|
}
|
|
ErrSecretServiceNoObj SecretServiceError = SecretServiceError{
|
|
ErrCode: EnumErrNoSuchObject,
|
|
ErrName: "SECRET_ERROR_NO_SUCH_OBJECT",
|
|
ErrDesc: "no such item/collection was found in SecretService",
|
|
}
|
|
ErrSecretServiceExists SecretServiceError = SecretServiceError{
|
|
ErrCode: EnumErrAlreadyExists,
|
|
ErrName: "SECRET_ERROR_ALREADY_EXISTS",
|
|
ErrDesc: "a relevant item/collection already exists",
|
|
}
|
|
ErrSecretServiceInvalidFormat SecretServiceError = SecretServiceError{
|
|
ErrCode: EnumErrInvalidFileFormat,
|
|
ErrName: "SECRET_ERROR_INVALID_FILE_FORMAT",
|
|
ErrDesc: "the file/content format is invalid",
|
|
}
|
|
/*
|
|
AllSecretServiceErrs provides a slice of these for easier iteration when translating.
|
|
TECHNICALLY, because they are indexed in the order of their enums, you could
|
|
simplify and optimize translation by just doing e.g.
|
|
|
|
err = AllSecretServiceErrs[EnumErrProtocol]
|
|
|
|
But this should be considered UNSTABLE and UNSAFE due to it being potentially unpredictable in the future.
|
|
There are only 5 errors currently, so the performance benefits would be negligible compared to iteration.
|
|
If SecretService adds more errors, however, this may be more desirable.
|
|
*/
|
|
AllSecretServiceErrs []SecretServiceError = []SecretServiceError{
|
|
ErrSecretServiceProto,
|
|
ErrSecretServiceLocked,
|
|
ErrSecretServiceNoObj,
|
|
ErrSecretServiceExists,
|
|
ErrSecretServiceInvalidFormat,
|
|
}
|
|
)
|