summaryrefslogtreecommitdiff
path: root/vendor/github.com/superseriousbusiness/activity/pub/social_protocol.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/superseriousbusiness/activity/pub/social_protocol.go')
-rw-r--r--vendor/github.com/superseriousbusiness/activity/pub/social_protocol.go83
1 files changed, 83 insertions, 0 deletions
diff --git a/vendor/github.com/superseriousbusiness/activity/pub/social_protocol.go b/vendor/github.com/superseriousbusiness/activity/pub/social_protocol.go
new file mode 100644
index 000000000..7947b3e7e
--- /dev/null
+++ b/vendor/github.com/superseriousbusiness/activity/pub/social_protocol.go
@@ -0,0 +1,83 @@
+package pub
+
+import (
+ "context"
+ "net/http"
+
+ "github.com/superseriousbusiness/activity/streams/vocab"
+)
+
+// SocialProtocol contains behaviors an application needs to satisfy for the
+// full ActivityPub C2S implementation to be supported by this library.
+//
+// It is only required if the client application wants to support the client-to-
+// server, or social, protocol.
+//
+// It is passed to the library as a dependency injection from the client
+// application.
+type SocialProtocol interface {
+ // Hook callback after parsing the request body for a client request
+ // to the Actor's outbox.
+ //
+ // Can be used to set contextual information based on the
+ // ActivityStreams object received.
+ //
+ // Only called if the Social API is enabled.
+ //
+ // Warning: Neither authentication nor authorization has taken place at
+ // this time. Doing anything beyond setting contextual information is
+ // strongly discouraged.
+ //
+ // If an error is returned, it is passed back to the caller of
+ // PostOutbox. In this case, the DelegateActor implementation must not
+ // write a response to the ResponseWriter as is expected that the caller
+ // to PostOutbox will do so when handling the error.
+ PostOutboxRequestBodyHook(c context.Context, r *http.Request, data vocab.Type) (context.Context, error)
+ // AuthenticatePostOutbox delegates the authentication of a POST to an
+ // outbox.
+ //
+ // Only called if the Social API is enabled.
+ //
+ // If an error is returned, it is passed back to the caller of
+ // PostOutbox. In this case, the implementation must not write a
+ // response to the ResponseWriter as is expected that the client will
+ // do so when handling the error. The 'authenticated' is ignored.
+ //
+ // If no error is returned, but authentication or authorization fails,
+ // then authenticated must be false and error nil. It is expected that
+ // the implementation handles writing to the ResponseWriter in this
+ // case.
+ //
+ // Finally, if the authentication and authorization succeeds, then
+ // authenticated must be true and error nil. The request will continue
+ // to be processed.
+ AuthenticatePostOutbox(c context.Context, w http.ResponseWriter, r *http.Request) (out context.Context, authenticated bool, err error)
+ // SocialCallbacks returns the application logic that handles
+ // ActivityStreams received from C2S clients.
+ //
+ // Note that certain types of callbacks will be 'wrapped' with default
+ // behaviors supported natively by the library. Other callbacks
+ // compatible with streams.TypeResolver can be specified by 'other'.
+ //
+ // For example, setting the 'Create' field in the SocialWrappedCallbacks
+ // lets an application dependency inject additional behaviors they want
+ // to take place, including the default behavior supplied by this
+ // library. This is guaranteed to be compliant with the ActivityPub
+ // Social protocol.
+ //
+ // To override the default behavior, instead supply the function in
+ // 'other', which does not guarantee the application will be compliant
+ // with the ActivityPub Social Protocol.
+ //
+ // Applications are not expected to handle every single ActivityStreams
+ // type and extension. The unhandled ones are passed to DefaultCallback.
+ SocialCallbacks(c context.Context) (wrapped SocialWrappedCallbacks, other []interface{}, err error)
+ // DefaultCallback is called for types that go-fed can deserialize but
+ // are not handled by the application's callbacks returned in the
+ // Callbacks method.
+ //
+ // Applications are not expected to handle every single ActivityStreams
+ // type and extension, so the unhandled ones are passed to
+ // DefaultCallback.
+ DefaultCallback(c context.Context, activity Activity) error
+}