-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
package activitypub
import (
"fmt"
as "github.com/go-ap/activitystreams"
)
type causer interface {
// Cause returns the parent error
Cause() error
}
// Error is an local error type
// It should contain the ActivityPub object that generated the error
type Error struct {
on as.Item
msg string
parent error
}
// Error implements the errors interface
func (e Error) Error() string {
return fmt.Sprintf("%s %s", e.msg, *e.on.GetID())
}
// Cause returns the parent error
func (e Error) Cause() error {
return e.parent
}
func (e Error) Is(err error) bool {
for {
if err == e {
return true
}
if e, ok := err.(causer); ok {
err = e.Cause()
} else {
return false
}
}
}