c8e9a9ffc9
./astool/astool -spec astool/activitystreams.jsonld \ -spec astool/security-v1.jsonld ./streams
222 行
7.3 KiB
Go
222 行
7.3 KiB
Go
package streams
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
vocab "github.com/go-fed/activity/streams/vocab"
|
|
)
|
|
|
|
// ErrNoCallbackMatch indicates a Resolver could not match the ActivityStreams value to a callback function.
|
|
var ErrNoCallbackMatch error = errors.New("activity stream did not match the callback function")
|
|
|
|
// ErrUnhandledType indicates that an ActivityStreams value has a type that is not handled by the code that has been generated.
|
|
var ErrUnhandledType error = errors.New("activity stream did not match any known types")
|
|
|
|
// ErrPredicateUnmatched indicates that a predicate is accepting a type or interface that does not match an ActivityStreams value's type or interface.
|
|
var ErrPredicateUnmatched error = errors.New("activity stream did not match type demanded by predicate")
|
|
|
|
// errCannotTypeAssertType indicates that the 'type' property returned by the ActivityStreams value cannot be type-asserted to its interface form.
|
|
var errCannotTypeAssertType error = errors.New("activity stream type cannot be asserted to its interface")
|
|
|
|
// errCannotTypeAssertPredicate indicates that a predicate cannot be type-casted to an expected function signature.
|
|
var errCannotTypeAssertPredicate error = errors.New("predicate cannot be type asserted to a known function type")
|
|
|
|
// ActivityStreamsInterface represents any ActivityStream value code-generated by
|
|
// go-fed or compatible with the generated interfaces.
|
|
type ActivityStreamsInterface interface {
|
|
// GetTypeName returns the ActiivtyStreams value's type.
|
|
GetTypeName() string
|
|
// VocabularyURI returns the vocabulary's URI as a string.
|
|
VocabularyURI() string
|
|
}
|
|
|
|
// Resolver represents any TypeResolver.
|
|
type Resolver interface {
|
|
// Resolve will attempt to resolve an untyped ActivityStreams value into a
|
|
// Go concrete type.
|
|
Resolve(ctx context.Context, o ActivityStreamsInterface) error
|
|
}
|
|
|
|
// IsUnmatchedErr is true when the error indicates that a Resolver was
|
|
// unsuccessful due to the ActivityStreams value not matching its callbacks or
|
|
// predicates.
|
|
func IsUnmatchedErr(err error) bool {
|
|
return err == ErrPredicateUnmatched || err == ErrUnhandledType || err == ErrNoCallbackMatch
|
|
}
|
|
|
|
// ToType attempts to resolve the generic JSON map into a Type.
|
|
func ToType(c context.Context, m map[string]interface{}) (t vocab.Type, err error) {
|
|
var r *JSONResolver
|
|
r, err = NewJSONResolver(func(ctx context.Context, i vocab.ActivityStreamsAccept) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsActivity) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsAdd) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsAnnounce) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsApplication) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsArrive) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsArticle) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsAudio) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsBlock) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsCollection) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsCollectionPage) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsCreate) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsDelete) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsDislike) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsDocument) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsEvent) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsFlag) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsFollow) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsGroup) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsIgnore) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsImage) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsIntransitiveActivity) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsInvite) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsJoin) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsLeave) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsLike) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsLink) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsListen) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsMention) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsMove) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsNote) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsObject) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsOffer) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsOrderedCollection) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsOrderedCollectionPage) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsOrganization) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsPage) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsPerson) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsPlace) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsProfile) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.W3IDSecurityV1PublicKey) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsQuestion) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsRead) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsReject) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsRelationship) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsRemove) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsService) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsTentativeAccept) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsTentativeReject) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsTombstone) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsTravel) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsUndo) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsUpdate) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsVideo) error {
|
|
t = i
|
|
return nil
|
|
}, func(ctx context.Context, i vocab.ActivityStreamsView) error {
|
|
t = i
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = r.Resolve(c, m)
|
|
return
|
|
}
|