diff options
author | 2023-01-17 11:25:13 +0000 | |
---|---|---|
committer | 2023-01-17 11:25:13 +0000 | |
commit | a6c6bdb34ab668ab810308e63325a891e404e434 (patch) | |
tree | 12be85a203123dbaa602e8173343c015d5149047 /vendor/codeberg.org/gruf/go-errors/v2/value.go | |
parent | [bugfix] Parse video metadata more accurately; allow Range in fileserver (#1342) (diff) | |
download | gotosocial-a6c6bdb34ab668ab810308e63325a891e404e434.tar.xz |
[chore]: Bump codeberg.org/gruf/go-errors/v2 from 2.0.2 to 2.1.1 (#1346)
Bumps codeberg.org/gruf/go-errors/v2 from 2.0.2 to 2.1.1.
---
updated-dependencies:
- dependency-name: codeberg.org/gruf/go-errors/v2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Diffstat (limited to 'vendor/codeberg.org/gruf/go-errors/v2/value.go')
-rw-r--r-- | vendor/codeberg.org/gruf/go-errors/v2/value.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/vendor/codeberg.org/gruf/go-errors/v2/value.go b/vendor/codeberg.org/gruf/go-errors/v2/value.go new file mode 100644 index 000000000..6a1f64451 --- /dev/null +++ b/vendor/codeberg.org/gruf/go-errors/v2/value.go @@ -0,0 +1,54 @@ +package errors + +// WithValue wraps err to store given key-value pair, accessible via Value() function. +func WithValue(err error, key any, value any) error { + if err == nil { + panic("nil error") + } + return &errWithValue{ + err: err, + key: key, + val: value, + } +} + +// Value searches for value stored under given key in error chain. +func Value(err error, key any) any { + var e *errWithValue + + if !As(err, &e) { + return nil + } + + return e.Value(key) +} + +type errWithValue struct { + err error + key any + val any +} + +func (e *errWithValue) Error() string { + return e.err.Error() +} + +func (e *errWithValue) Is(target error) bool { + return e.err == target +} + +func (e *errWithValue) Unwrap() error { + return Unwrap(e.err) +} + +func (e *errWithValue) Value(key any) any { + for { + if key == e.key { + return e.val + } + + if !As(e.err, &e) { + return nil + } + } +} |