2018-10-11 09:26:00 +00:00
package activitystreams
2017-09-11 21:10:56 +00:00
2018-06-09 11:06:55 +00:00
import (
2019-05-07 21:11:15 +00:00
"errors"
2018-06-09 12:05:46 +00:00
"time"
2018-06-09 11:06:55 +00:00
)
2018-03-24 16:54:55 +00:00
// Activity Types
2017-09-11 21:10:56 +00:00
const (
2017-10-02 09:53:09 +00:00
AcceptType ActivityVocabularyType = "Accept"
AddType ActivityVocabularyType = "Add"
AnnounceType ActivityVocabularyType = "Announce"
ArriveType ActivityVocabularyType = "Arrive"
BlockType ActivityVocabularyType = "Block"
CreateType ActivityVocabularyType = "Create"
DeleteType ActivityVocabularyType = "Delete"
DislikeType ActivityVocabularyType = "Dislike"
FlagType ActivityVocabularyType = "Flag"
FollowType ActivityVocabularyType = "Follow"
IgnoreType ActivityVocabularyType = "Ignore"
InviteType ActivityVocabularyType = "Invite"
JoinType ActivityVocabularyType = "Join"
LeaveType ActivityVocabularyType = "Leave"
LikeType ActivityVocabularyType = "Like"
ListenType ActivityVocabularyType = "Listen"
MoveType ActivityVocabularyType = "Move"
OfferType ActivityVocabularyType = "Offer"
QuestionType ActivityVocabularyType = "Question"
RejectType ActivityVocabularyType = "Reject"
ReadType ActivityVocabularyType = "Read"
RemoveType ActivityVocabularyType = "Remove"
TentativeRejectType ActivityVocabularyType = "TentativeReject"
TentativeAcceptType ActivityVocabularyType = "TentativeAccept"
TravelType ActivityVocabularyType = "Travel"
UndoType ActivityVocabularyType = "Undo"
UpdateType ActivityVocabularyType = "Update"
ViewType ActivityVocabularyType = "View"
2017-09-11 21:10:56 +00:00
)
2019-05-16 09:08:27 +00:00
type ActivityVocabularyTypes [ ] ActivityVocabularyType
func ( a ActivityVocabularyTypes ) Contains ( typ ActivityVocabularyType ) bool {
for _ , v := range a {
if v == typ {
return true
}
}
return false
}
2019-05-16 15:14:30 +00:00
// ContentManagementActivityTypes use case primarily deals with activities that involve the creation, modification or deletion of content.
// This includes, for instance, activities such as "John created a new note", "Sally updated an article", and "Joe deleted the photo".
2019-05-16 09:08:27 +00:00
var ContentManagementActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
CreateType ,
DeleteType ,
UpdateType ,
}
2019-05-16 15:14:30 +00:00
// CollectionManagementActivityTypes use case primarily deals with activities involving the management of content within collections.
// Examples of collections include things like folders, albums, friend lists, etc.
// This includes, for instance, activities such as "Sally added a file to Folder A", "John moved the file from Folder A to Folder B", etc.
2019-05-16 09:08:27 +00:00
var CollectionManagementActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
AddType ,
MoveType ,
RemoveType ,
}
2019-05-16 15:14:30 +00:00
// ReactionsActivityTypes use case primarily deals with reactions to content.
// This can include activities such as liking or disliking content, ignoring updates, flagging content as being inappropriate, accepting or rejecting objects, etc.
2019-05-16 09:08:27 +00:00
var ReactionsActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
AcceptType ,
BlockType ,
DislikeType ,
FlagType ,
IgnoreType ,
LikeType ,
RejectType ,
TentativeAcceptType ,
TentativeRejectType ,
}
2019-05-16 15:14:30 +00:00
// EventRSVPActivityTypes use case primarily deals with invitations to events and RSVP type responses.
2019-05-16 09:08:27 +00:00
var EventRSVPActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
AcceptType ,
IgnoreType ,
InviteType ,
RejectType ,
TentativeAcceptType ,
TentativeRejectType ,
}
2019-05-16 15:14:30 +00:00
// GroupManagementActivityTypes use case primarily deals with management of groups.
// It can include, for instance, activities such as "John added Sally to Group A", "Sally joined Group A", "Joe left Group A", etc.
2019-05-16 09:08:27 +00:00
var GroupManagementActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
AddType ,
JoinType ,
LeaveType ,
RemoveType ,
}
2019-05-16 15:14:30 +00:00
// ContentExperienceActivityTypes use case primarily deals with describing activities involving listening to, reading, or viewing content.
// For instance, "Sally read the article", "Joe listened to the song".
2019-05-16 09:08:27 +00:00
var ContentExperienceActivityTypes = ActivityVocabularyTypes {
2019-05-16 15:06:31 +00:00
ListenType ,
ReadType ,
ViewType ,
2018-11-01 14:54:23 +00:00
}
2019-05-16 15:14:30 +00:00
// GeoSocialEventsActivityTypes use case primarily deals with activities involving geo-tagging type activities.
// For instance, it can include activities such as "Joe arrived at work", "Sally left work", and "John is travel from home to work".
2019-05-16 09:08:27 +00:00
var GeoSocialEventsActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
ArriveType ,
LeaveType ,
TravelType ,
}
2019-05-16 15:14:30 +00:00
// NotificationActivityTypes use case primarily deals with calling attention to particular objects or notifications.
2019-05-16 09:08:27 +00:00
var NotificationActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
AnnounceType ,
}
2019-05-16 15:14:30 +00:00
// QuestionActivityTypes use case primarily deals with representing inquiries of any type.
// See 5.4 Representing Questions for more information.
2019-05-16 09:08:27 +00:00
var QuestionActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
QuestionType ,
}
2019-05-16 15:14:30 +00:00
// RelationshipManagementActivityTypes use case primarily deals with representing activities involving the management of interpersonal and social relationships
// (e.g. friend requests, management of social network, etc). See 5.2 Representing Relationships Between Entities for more information.
2019-05-16 09:08:27 +00:00
var RelationshipManagementActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
AcceptType ,
AddType ,
BlockType ,
CreateType ,
DeleteType ,
FollowType ,
IgnoreType ,
InviteType ,
RejectType ,
}
2019-05-16 15:14:30 +00:00
// NegatingActivityTypes use case primarily deals with the ability to redact previously completed activities.
// See 5.5 Inverse Activities and "Undo" for more information.
2019-05-16 09:08:27 +00:00
var NegatingActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
UndoType ,
}
2019-05-16 15:14:30 +00:00
// OffersActivityTypes use case deals with activities involving offering one object to another.
// It can include, for instance, activities such as "Company A is offering a discount on purchase of Product Z to Sally", "Sally is offering to add a File to Folder A", etc.
2019-05-16 09:08:27 +00:00
var OffersActivityTypes = ActivityVocabularyTypes {
2018-11-01 14:54:23 +00:00
OfferType ,
}
2019-05-16 15:14:30 +00:00
2019-05-16 09:08:27 +00:00
var IntransitiveActivityTypes = ActivityVocabularyTypes {
2018-11-04 19:31:04 +00:00
ArriveType ,
TravelType ,
QuestionType ,
}
2019-05-16 15:14:30 +00:00
2019-05-16 09:08:27 +00:00
var ActivityTypes = ActivityVocabularyTypes {
2017-09-11 21:10:56 +00:00
AcceptType ,
AddType ,
AnnounceType ,
BlockType ,
CreateType ,
DeleteType ,
DislikeType ,
FlagType ,
FollowType ,
IgnoreType ,
InviteType ,
JoinType ,
LeaveType ,
LikeType ,
ListenType ,
MoveType ,
OfferType ,
RejectType ,
ReadType ,
RemoveType ,
TentativeRejectType ,
TentativeAcceptType ,
UndoType ,
UpdateType ,
ViewType ,
}
2019-05-26 20:25:44 +00:00
// HasRecipients is an interface implemented by activities to return their audience
// for further propagation
type HasRecipients interface {
// Recipients is a method that should do a recipients de-duplication step and then return
// the remaining recipients
Recipients ( ) ItemCollection
}
2018-07-18 15:39:27 +00:00
// Activity is a subtype of Object that describes some form of action that may happen,
2018-10-18 09:48:02 +00:00
// is currently happening, or has already happened.
2018-06-09 12:05:46 +00:00
// The Activity type itself serves as an abstract base type for all types of activities.
// It is important to note that the Activity type itself does not carry any specific semantics
2018-10-18 09:48:02 +00:00
// about the kind of action being taken.
2018-06-09 12:05:46 +00:00
type Activity struct {
2018-11-23 14:22:56 +00:00
Parent
2018-10-24 09:28:55 +00:00
// Actor describes one or more entities that either performed or are expected to perform the activity.
2018-07-18 15:39:27 +00:00
// Any single activity can have multiple actors. The actor may be specified using an indirect Link.
2018-10-04 18:33:32 +00:00
Actor Item ` jsonld:"actor,omitempty" `
2018-10-24 09:28:55 +00:00
// Target describes the indirect object, or target, of the activity.
2017-09-16 17:53:11 +00:00
// The precise meaning of the target is largely dependent on the type of action being described
2018-10-18 09:48:02 +00:00
// but will often be the object of the English preposition "to".
2017-09-16 17:53:11 +00:00
// For instance, in the activity "John added a movie to his wishlist",
2018-10-18 09:48:02 +00:00
// the target of the activity is John's wishlist. An activity can have more than one target.
2018-10-04 18:33:32 +00:00
Target Item ` jsonld:"target,omitempty" `
2018-10-24 09:28:55 +00:00
// Result describes the result of the activity. For instance, if a particular action results in the creation
2018-10-18 09:48:02 +00:00
// of a new resource, the result property can be used to describe that new resource.
2018-10-04 18:33:32 +00:00
Result Item ` jsonld:"result,omitempty" `
2018-10-24 09:28:55 +00:00
// Origin describes an indirect object of the activity from which the activity is directed.
2017-09-16 17:53:11 +00:00
// The precise meaning of the origin is the object of the English preposition "from".
// For instance, in the activity "John moved an item to List B from List A", the origin of the activity is "List A".
2018-10-04 18:33:32 +00:00
Origin Item ` jsonld:"origin,omitempty" `
2018-10-24 09:28:55 +00:00
// Instrument identifies one or more objects used (or to be used) in the completion of an Activity.
Instrument Item ` jsonld:"instrument,omitempty" `
// Object When used within an Activity, describes the direct object of the activity.
2017-09-12 15:46:43 +00:00
// For instance, in the activity "John added a movie to his wishlist",
2018-10-18 09:48:02 +00:00
// the object of the activity is the movie added.
2017-09-12 15:46:43 +00:00
// When used within a Relationship describes the entity to which the subject is related.
2018-10-04 18:33:32 +00:00
Object Item ` jsonld:"object,omitempty" `
2017-09-11 21:10:56 +00:00
}
2018-06-09 12:05:46 +00:00
// IntransitiveActivity Instances of IntransitiveActivity are a subtype of Activity representing intransitive actions.
// The object property is therefore inappropriate for these activities.
type IntransitiveActivity struct {
2018-11-23 14:22:56 +00:00
Parent
2018-10-24 09:28:55 +00:00
// Actor describes one or more entities that either performed or are expected to perform the activity.
2018-07-18 15:39:27 +00:00
// Any single activity can have multiple actors. The actor may be specified using an indirect Link.
2018-06-09 12:05:46 +00:00
Actor Actor ` jsonld:"actor,omitempty" `
2018-10-24 09:28:55 +00:00
// Target describes the indirect object, or target, of the activity.
2018-06-09 12:05:46 +00:00
// The precise meaning of the target is largely dependent on the type of action being described
2018-10-18 09:48:02 +00:00
// but will often be the object of the English preposition "to".
2018-06-09 12:05:46 +00:00
// For instance, in the activity "John added a movie to his wishlist",
2018-10-18 09:48:02 +00:00
// the target of the activity is John's wishlist. An activity can have more than one target.
2018-10-04 18:33:32 +00:00
Target Item ` jsonld:"target,omitempty" `
2018-10-24 09:28:55 +00:00
// Result describes the result of the activity. For instance, if a particular action results in the creation
2018-10-18 09:48:02 +00:00
// of a new resource, the result property can be used to describe that new resource.
2018-10-04 18:33:32 +00:00
Result Item ` jsonld:"result,omitempty" `
2018-10-24 09:28:55 +00:00
// Origin describes an indirect object of the activity from which the activity is directed.
2018-06-09 12:05:46 +00:00
// The precise meaning of the origin is the object of the English preposition "from".
// For instance, in the activity "John moved an item to List B from List A", the origin of the activity is "List A".
2018-10-04 18:33:32 +00:00
Origin Item ` jsonld:"origin,omitempty" `
2018-10-24 09:28:55 +00:00
// Instrument identifies one or more objects used (or to be used) in the completion of an Activity.
Instrument Item ` jsonld:"instrument,omitempty" `
2018-06-09 12:05:46 +00:00
}
2017-09-16 17:53:11 +00:00
type (
2018-03-24 16:54:55 +00:00
// Accept indicates that the actor accepts the object. The target property can be used in certain circumstances to indicate
2018-10-18 09:48:02 +00:00
// the context into which the object has been accepted.
2017-09-16 17:53:11 +00:00
Accept Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Add indicates that the actor has added the object to the target. If the target property is not explicitly specified,
2018-10-18 09:48:02 +00:00
// the target would need to be determined implicitly by context.
2017-09-16 17:53:11 +00:00
// The origin can be used to identify the context from which the object originated.
Add Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Announce indicates that the actor is calling the target's attention the object.
2017-09-16 17:53:11 +00:00
// The origin typically has no defined meaning.
Announce Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Arrive is an IntransitiveActivity that indicates that the actor has arrived at the location.
2017-09-16 17:53:11 +00:00
// The origin can be used to identify the context from which the actor originated.
// The target typically has no defined meaning.
Arrive IntransitiveActivity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Block indicates that the actor is blocking the object. Blocking is a stronger form of Ignore.
2017-09-16 17:53:11 +00:00
// The typical use is to support social systems that allow one user to block activities or content of other users.
// The target and origin typically have no defined meaning.
Block Ignore
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Create indicates that the actor has created the object.
2017-09-16 17:53:11 +00:00
Create Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Delete indicates that the actor has deleted the object.
2017-09-16 17:53:11 +00:00
// If specified, the origin indicates the context from which the object was deleted.
Delete Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Dislike indicates that the actor dislikes the object.
2017-09-16 17:53:11 +00:00
Dislike Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Flag indicates that the actor is "flagging" the object.
2017-09-16 17:53:11 +00:00
// Flagging is defined in the sense common to many social platforms as reporting content as being
2018-10-18 09:48:02 +00:00
// inappropriate for any number of reasons.
2017-09-16 17:53:11 +00:00
Flag Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Follow indicates that the actor is "following" the object. Following is defined in the sense typically used within
2018-10-18 09:48:02 +00:00
// Social systems in which the actor is interested in any activity performed by or on the object.
2017-09-16 17:53:11 +00:00
// The target and origin typically have no defined meaning.
Follow Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Ignore indicates that the actor is ignoring the object. The target and origin typically have no defined meaning.
2017-09-16 17:53:11 +00:00
Ignore Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Invite is a specialization of Offer in which the actor is extending an invitation for the object to the target.
2017-09-16 17:53:11 +00:00
Invite Offer
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Join indicates that the actor has joined the object. The target and origin typically have no defined meaning.
2017-09-16 17:53:11 +00:00
Join Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Leave indicates that the actor has left the object. The target and origin typically have no meaning.
2017-09-16 17:53:11 +00:00
Leave Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Like indicates that the actor likes, recommends or endorses the object.
2017-09-16 17:53:11 +00:00
// The target and origin typically have no defined meaning.
Like Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Listen inherits all properties from Activity.
2017-09-16 17:53:11 +00:00
Listen Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Move indicates that the actor has moved object from origin to target.
2017-09-16 17:53:11 +00:00
// If the origin or target are not specified, either can be determined by context.
Move Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Offer indicates that the actor is offering the object.
2017-09-16 17:53:11 +00:00
// If specified, the target indicates the entity to which the object is being offered.
Offer Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Reject indicates that the actor is rejecting the object. The target and origin typically have no defined meaning.
2017-09-16 17:53:11 +00:00
Reject Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Read indicates that the actor has read the object.
2017-09-16 17:53:11 +00:00
Read Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Remove indicates that the actor is removing the object. If specified,
2018-10-18 09:48:02 +00:00
// the origin indicates the context from which the object is being removed.
2017-09-16 17:53:11 +00:00
Remove Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// TentativeReject is a specialization of Reject in which the rejection is considered tentative.
2017-09-16 17:53:11 +00:00
TentativeReject Reject
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// TentativeAccept is a specialization of Accept indicating that the acceptance is tentative.
2017-09-16 17:53:11 +00:00
TentativeAccept Accept
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Travel indicates that the actor is traveling to target from origin.
2017-09-16 17:53:11 +00:00
// Travel is an IntransitiveObject whose actor specifies the direct object.
// If the target or origin are not specified, either can be determined by context.
Travel IntransitiveActivity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Undo indicates that the actor is undoing the object. In most cases, the object will be an Activity describing
2018-10-18 09:48:02 +00:00
// some previously performed action (for instance, a person may have previously "liked" an article but,
// for whatever reason, might choose to undo that like at some later point in time).
2017-09-16 17:53:11 +00:00
// The target and origin typically have no defined meaning.
Undo Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Update indicates that the actor has updated the object. Note, however, that this vocabulary does not define a mechanism
2018-10-18 09:48:02 +00:00
// for describing the actual set of modifications made to object.
2017-09-16 17:53:11 +00:00
// The target and origin typically have no defined meaning.
Update Activity
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// View indicates that the actor has viewed the object.
2017-09-16 17:53:11 +00:00
View Activity
)
2017-09-12 16:53:41 +00:00
2018-03-24 16:54:55 +00:00
// Question represents a question being asked. Question objects are an extension of IntransitiveActivity.
2017-09-12 16:53:41 +00:00
// That is, the Question object is an Activity, but the direct object is the question
2018-10-18 09:48:02 +00:00
// itself and therefore it would not contain an object property.
2017-09-12 16:53:41 +00:00
// Either of the anyOf and oneOf properties may be used to express possible answers,
2018-10-18 09:48:02 +00:00
// but a Question object must not have both properties.
2017-09-12 16:53:41 +00:00
type Question struct {
2018-10-24 09:28:55 +00:00
// ID providesthe globally unique identifier for an Activity Pub Object or Link.
2018-06-09 12:05:46 +00:00
ID ObjectID ` jsonld:"id,omitempty" `
2018-10-24 09:28:55 +00:00
// Type identifies the Activity Pub Object or Link type. Multiple values may be specified.
2018-06-09 12:05:46 +00:00
Type ActivityVocabularyType ` jsonld:"type,omitempty" `
2018-10-24 09:28:55 +00:00
// Name a simple, human-readable, plain-text name for the object.
2018-06-09 12:05:46 +00:00
// HTML markup MUST NOT be included. The name MAY be expressed using multiple language-tagged values.
2019-02-21 16:54:11 +00:00
Name NaturalLanguageValues ` jsonld:"name,omitempty,collapsible" `
2018-10-24 09:28:55 +00:00
// Attachment identifies a resource attached or related to an object that potentially requires special handling.
2018-06-09 12:05:46 +00:00
// The intent is to provide a model that is at least semantically similar to attachments in email.
2018-10-04 18:33:32 +00:00
Attachment Item ` jsonld:"attachment,omitempty" `
2018-10-24 09:28:55 +00:00
// AttributedTo identifies one or more entities to which this object is attributed. The attributed entities might not be Actors.
2018-06-09 12:05:46 +00:00
// For instance, an object might be attributed to the completion of another activity.
2018-10-04 18:33:32 +00:00
AttributedTo Item ` jsonld:"attributedTo,omitempty" `
2018-10-24 09:28:55 +00:00
// Audience identifies one or more entities that represent the total population of entities
2018-10-18 09:48:02 +00:00
// for which the object can considered to be relevant.
2018-10-04 18:33:32 +00:00
Audience Item ` jsonld:"audience,omitempty" `
2018-10-24 09:28:55 +00:00
// Content the content or textual representation of the Activity Pub Object encoded as a JSON string.
2018-06-09 12:05:46 +00:00
// By default, the value of content is HTML.
// The mediaType property can be used in the object to indicate a different content type.
// (The content MAY be expressed using multiple language-tagged values.)
2019-02-21 16:54:11 +00:00
Content NaturalLanguageValues ` jsonld:"content,omitempty,collapsible" `
2018-10-24 09:28:55 +00:00
// Context identifies the context within which the object exists or an activity was performed.
2018-06-09 12:05:46 +00:00
// The notion of "context" used is intentionally vague.
// The intended function is to serve as a means of grouping objects and activities that share a
2018-10-18 09:48:02 +00:00
// common originating context or purpose. An example could be all activities relating to a common project or event.
2018-10-04 18:33:32 +00:00
Context Item ` jsonld:"context,omitempty" `
2018-10-24 09:28:55 +00:00
// EndTime the date and time describing the actual or expected ending time of the object.
2018-06-09 12:05:46 +00:00
// When used with an Activity object, for instance, the endTime property specifies the moment
2018-10-18 09:48:02 +00:00
// the activity concluded or is expected to conclude.
2018-06-09 12:05:46 +00:00
EndTime time . Time ` jsonld:"endTime,omitempty" `
2018-10-24 09:28:55 +00:00
// Generator identifies the entity (e.g. an application) that generated the object.
2018-10-04 18:33:32 +00:00
Generator Item ` jsonld:"generator,omitempty" `
2018-10-24 09:28:55 +00:00
// Icon indicates an entity that describes an icon for this object.
2018-06-09 12:05:46 +00:00
// The image should have an aspect ratio of one (horizontal) to one (vertical)
2018-10-18 09:48:02 +00:00
// and should be suitable for presentation at a small size.
2018-10-11 19:47:31 +00:00
Icon Item ` jsonld:"icon,omitempty" `
2018-10-24 09:28:55 +00:00
// Image indicates an entity that describes an image for this object.
2018-06-09 12:05:46 +00:00
// Unlike the icon property, there are no aspect ratio or display size limitations assumed.
2018-10-11 19:47:31 +00:00
Image Item ` jsonld:"image,omitempty" `
2018-10-24 09:28:55 +00:00
// InReplyTo indicates one or more entities for which this object is considered a response.
2018-10-04 18:33:32 +00:00
InReplyTo Item ` jsonld:"inReplyTo,omitempty" `
2018-10-24 09:28:55 +00:00
// Location indicates one or more physical or logical locations associated with the object.
2018-10-04 18:33:32 +00:00
Location Item ` jsonld:"location,omitempty" `
2018-10-24 09:28:55 +00:00
// Preview identifies an entity that providesa preview of this object.
2018-10-04 18:33:32 +00:00
Preview Item ` jsonld:"preview,omitempty" `
2018-10-24 09:28:55 +00:00
// Published the date and time at which the object was published
2018-06-09 12:05:46 +00:00
Published time . Time ` jsonld:"published,omitempty" `
2018-10-24 09:28:55 +00:00
// Replies identifies a Collection containing objects considered to be responses to this object.
2018-10-04 18:33:32 +00:00
Replies Item ` jsonld:"replies,omitempty" `
2018-10-24 09:28:55 +00:00
// StartTime the date and time describing the actual or expected starting time of the object.
2018-06-09 12:05:46 +00:00
// When used with an Activity object, for instance, the startTime property specifies
2018-10-18 09:48:02 +00:00
// the moment the activity began or is scheduled to begin.
2018-06-09 12:05:46 +00:00
StartTime time . Time ` jsonld:"startTime,omitempty" `
2018-10-24 09:28:55 +00:00
// Summary a natural language summarization of the object encoded as HTML.
2018-06-09 12:05:46 +00:00
// *Multiple language tagged summaries may be provided.)
2019-02-21 16:54:11 +00:00
Summary NaturalLanguageValues ` jsonld:"summary,omitempty,collapsible" `
2018-10-24 09:28:55 +00:00
// Tag One or more "tags" that have been associated with an objects. A tag can be any kind of Activity Pub Object.
2018-06-09 12:05:46 +00:00
// The key difference between attachment and tag is that the former implies association by inclusion,
2018-10-18 09:48:02 +00:00
// while the latter implies associated by reference.
2018-10-04 18:33:32 +00:00
Tag Item ` jsonld:"tag,omitempty" `
2018-10-24 09:28:55 +00:00
// Updated the date and time at which the object was updated
2018-06-09 12:05:46 +00:00
Updated time . Time ` jsonld:"updated,omitempty" `
2018-10-24 09:28:55 +00:00
// URL identifies one or more links to representations of the object
2018-06-09 12:05:46 +00:00
URL LinkOrURI ` jsonld:"url,omitempty" `
2018-10-24 09:28:55 +00:00
// To identifies an entity considered to be part of the public primary audience of an Activity Pub Object
2018-10-04 18:33:32 +00:00
To ItemCollection ` jsonld:"to,omitempty" `
2018-10-24 09:28:55 +00:00
// Bto identifies an Activity Pub Object that is part of the private primary audience of this Activity Pub Object.
2018-10-04 18:33:32 +00:00
Bto ItemCollection ` jsonld:"bto,omitempty" `
2018-10-24 09:28:55 +00:00
// CC identifies an Activity Pub Object that is part of the public secondary audience of this Activity Pub Object.
2018-10-04 18:33:32 +00:00
CC ItemCollection ` jsonld:"cc,omitempty" `
2018-10-24 09:28:55 +00:00
// BCC identifies one or more Objects that are part of the private secondary audience of this Activity Pub Object.
2018-10-04 18:33:32 +00:00
BCC ItemCollection ` jsonld:"bcc,omitempty" `
2018-10-24 09:28:55 +00:00
// Duration When the object describes a time-bound resource, such as an audio or video, a meeting, etc,
2018-10-18 09:48:02 +00:00
// the duration property indicates the object's approximate duration.
2018-06-09 12:05:46 +00:00
// The value must be expressed as an xsd:duration as defined by [ xmlschema11-2],
2018-10-18 09:48:02 +00:00
// section 3.3.6 (e.g. a period of 5 seconds is represented as "PT5S").
2018-06-09 12:05:46 +00:00
Duration time . Duration ` jsonld:"duration,omitempty" `
2018-10-24 09:28:55 +00:00
// Actor describes one or more entities that either performed or are expected to perform the activity.
2018-07-18 15:39:27 +00:00
// Any single activity can have multiple actors. The actor may be specified using an indirect Link.
2018-06-09 12:05:46 +00:00
Actor Actor ` jsonld:"actor,omitempty" `
2018-10-24 09:28:55 +00:00
// Target describes the indirect object, or target, of the activity.
2018-06-09 12:05:46 +00:00
// The precise meaning of the target is largely dependent on the type of action being described
2018-10-18 09:48:02 +00:00
// but will often be the object of the English preposition "to".
2018-06-09 12:05:46 +00:00
// For instance, in the activity "John added a movie to his wishlist",
2018-10-18 09:48:02 +00:00
// the target of the activity is John's wishlist. An activity can have more than one target.
2018-10-04 18:33:32 +00:00
Target Item ` jsonld:"target,omitempty" `
2018-10-24 09:28:55 +00:00
// Result describes the result of the activity. For instance, if a particular action results in the creation
2018-10-18 09:48:02 +00:00
// of a new resource, the result property can be used to describe that new resource.
2018-10-04 18:33:32 +00:00
Result Item ` jsonld:"result,omitempty" `
2018-10-24 09:28:55 +00:00
// Origin describes an indirect object of the activity from which the activity is directed.
2018-06-09 12:05:46 +00:00
// The precise meaning of the origin is the object of the English preposition "from".
// For instance, in the activity "John moved an item to List B from List A", the origin of the activity is "List A".
2018-10-04 18:33:32 +00:00
Origin Item ` jsonld:"origin,omitempty" `
2018-10-24 09:28:55 +00:00
// Instrument identifies one or more objects used (or to be used) in the completion of an Activity.
Instrument Item ` jsonld:"instrument,omitempty" `
// OneOf identifies an exclusive option for a Question. Use of oneOf implies that the Question
2018-10-18 09:48:02 +00:00
// can have only a single answer. To indicate that a Question can have multiple answers, use anyOf.
2018-10-04 18:33:32 +00:00
OneOf Item ` jsonld:"oneOf,omitempty" `
2018-10-24 09:28:55 +00:00
// AnyOf identifies an inclusive option for a Question. Use of anyOf implies that the Question can have multiple answers.
2017-09-12 16:53:41 +00:00
// To indicate that a Question can have only one answer, use oneOf.
2018-10-04 18:33:32 +00:00
AnyOf Item ` jsonld:"anyOf,omitempty" `
2018-10-24 09:28:55 +00:00
// Closed indicates that a question has been closed, and answers are no longer accepted.
2017-10-02 09:53:09 +00:00
Closed bool ` jsonld:"closed,omitempty" `
2017-09-12 16:53:41 +00:00
}
2018-03-25 18:54:51 +00:00
// AcceptNew initializes an Accept activity
2018-10-04 18:33:32 +00:00
func AcceptNew ( id ObjectID , ob Item ) * Accept {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , AcceptType , ob )
2017-09-12 16:53:41 +00:00
o := Accept ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// AddNew initializes an Add activity
2018-10-04 18:33:32 +00:00
func AddNew ( id ObjectID , ob Item , trgt Item ) * Add {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , AddType , ob )
2017-09-12 16:53:41 +00:00
o := Add ( * a )
2018-03-27 15:40:25 +00:00
o . Target = trgt
2017-09-12 16:53:41 +00:00
return & o
}
2018-03-25 18:54:51 +00:00
// AnnounceNew initializes an Announce activity
2018-10-04 18:33:32 +00:00
func AnnounceNew ( id ObjectID , ob Item ) * Announce {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , AnnounceType , ob )
2017-09-12 16:53:41 +00:00
o := Announce ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// ArriveNew initializes an Arrive activity
2018-03-27 13:06:06 +00:00
func ArriveNew ( id ObjectID ) * Arrive {
2017-09-12 16:53:41 +00:00
a := IntransitiveActivityNew ( id , ArriveType )
o := Arrive ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// BlockNew initializes a Block activity
2018-10-04 18:33:32 +00:00
func BlockNew ( id ObjectID , ob Item ) * Block {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , BlockType , ob )
2017-09-12 16:53:41 +00:00
o := Block ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// CreateNew initializes a Create activity
2018-10-04 18:33:32 +00:00
func CreateNew ( id ObjectID , ob Item ) * Create {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , CreateType , ob )
2017-09-12 16:53:41 +00:00
o := Create ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// DeleteNew initializes a Delete activity
2018-10-04 18:33:32 +00:00
func DeleteNew ( id ObjectID , ob Item ) * Delete {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , DeleteType , ob )
2017-09-12 16:53:41 +00:00
o := Delete ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// DislikeNew initializes a Dislike activity
2018-10-04 18:33:32 +00:00
func DislikeNew ( id ObjectID , ob Item ) * Dislike {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , DislikeType , ob )
2017-09-12 16:53:41 +00:00
o := Dislike ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// FlagNew initializes a Flag activity
2018-10-04 18:33:32 +00:00
func FlagNew ( id ObjectID , ob Item ) * Flag {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , FlagType , ob )
2017-09-12 16:53:41 +00:00
o := Flag ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// FollowNew initializes a Follow activity
2018-10-04 18:33:32 +00:00
func FollowNew ( id ObjectID , ob Item ) * Follow {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , FollowType , ob )
2017-09-12 16:53:41 +00:00
o := Follow ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// IgnoreNew initializes an Ignore activity
2018-10-04 18:33:32 +00:00
func IgnoreNew ( id ObjectID , ob Item ) * Ignore {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , IgnoreType , ob )
2017-09-12 16:53:41 +00:00
o := Ignore ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// InviteNew initializes an Invite activity
2018-10-04 18:33:32 +00:00
func InviteNew ( id ObjectID , ob Item ) * Invite {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , InviteType , ob )
2017-09-12 16:53:41 +00:00
o := Invite ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// JoinNew initializes a Join activity
2018-10-04 18:33:32 +00:00
func JoinNew ( id ObjectID , ob Item ) * Join {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , JoinType , ob )
2017-09-12 16:53:41 +00:00
o := Join ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// LeaveNew initializes a Leave activity
2018-10-04 18:33:32 +00:00
func LeaveNew ( id ObjectID , ob Item ) * Leave {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , LeaveType , ob )
2017-09-12 16:53:41 +00:00
o := Leave ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// LikeNew initializes a Like activity
2018-10-04 18:33:32 +00:00
func LikeNew ( id ObjectID , ob Item ) * Like {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , LikeType , ob )
2017-09-12 16:53:41 +00:00
o := Like ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// ListenNew initializes a Listen activity
2018-10-04 18:33:32 +00:00
func ListenNew ( id ObjectID , ob Item ) * Listen {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , ListenType , ob )
2017-09-12 16:53:41 +00:00
o := Listen ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// MoveNew initializes a Move activity
2018-10-04 18:33:32 +00:00
func MoveNew ( id ObjectID , ob Item ) * Move {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , MoveType , ob )
2017-09-12 16:53:41 +00:00
o := Move ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// OfferNew initializes an Offer activity
2018-10-04 18:33:32 +00:00
func OfferNew ( id ObjectID , ob Item ) * Offer {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , OfferType , ob )
2017-09-12 16:53:41 +00:00
o := Offer ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// RejectNew initializes a Reject activity
2018-10-04 18:33:32 +00:00
func RejectNew ( id ObjectID , ob Item ) * Reject {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , RejectType , ob )
2017-09-12 16:53:41 +00:00
o := Reject ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// ReadNew initializes a Read activity
2018-10-04 18:33:32 +00:00
func ReadNew ( id ObjectID , ob Item ) * Read {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , ReadType , ob )
2017-09-12 16:53:41 +00:00
o := Read ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// RemoveNew initializes a Remove activity
2018-10-04 18:33:32 +00:00
func RemoveNew ( id ObjectID , ob Item , trgt Item ) * Remove {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , RemoveType , ob )
2017-09-12 16:53:41 +00:00
o := Remove ( * a )
2018-03-27 15:40:25 +00:00
o . Target = trgt
2017-09-12 16:53:41 +00:00
return & o
}
2018-03-25 18:54:51 +00:00
// TentativeRejectNew initializes a TentativeReject activity
2018-10-04 18:33:32 +00:00
func TentativeRejectNew ( id ObjectID , ob Item ) * TentativeReject {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , TentativeRejectType , ob )
2017-09-12 16:53:41 +00:00
o := TentativeReject ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// TentativeAcceptNew initializes a TentativeAccept activity
2018-10-04 18:33:32 +00:00
func TentativeAcceptNew ( id ObjectID , ob Item ) * TentativeAccept {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , TentativeAcceptType , ob )
2017-09-12 16:53:41 +00:00
o := TentativeAccept ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// TravelNew initializes a Travel activity
2018-03-27 13:06:06 +00:00
func TravelNew ( id ObjectID ) * Travel {
2017-09-12 16:53:41 +00:00
a := IntransitiveActivityNew ( id , TravelType )
o := Travel ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// UndoNew initializes an Undo activity
2018-10-04 18:33:32 +00:00
func UndoNew ( id ObjectID , ob Item ) * Undo {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , UndoType , ob )
2017-09-12 16:53:41 +00:00
o := Undo ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// UpdateNew initializes an Update activity
2018-10-04 18:33:32 +00:00
func UpdateNew ( id ObjectID , ob Item ) * Update {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , UpdateType , ob )
2018-10-02 09:22:38 +00:00
u := Update ( * a )
return & u
2017-09-12 16:53:41 +00:00
}
2018-03-25 18:54:51 +00:00
// ViewNew initializes a View activity
2018-10-04 18:33:32 +00:00
func ViewNew ( id ObjectID , ob Item ) * View {
2017-10-03 20:46:03 +00:00
a := ActivityNew ( id , ViewType , ob )
2017-09-12 16:53:41 +00:00
o := View ( * a )
return & o
}
2018-03-25 18:54:51 +00:00
// QuestionNew initializes a Question activity
2018-03-27 13:06:06 +00:00
func QuestionNew ( id ObjectID ) * Question {
2018-06-09 12:05:46 +00:00
q := Question { ID : id , Type : QuestionType }
2019-02-21 16:54:11 +00:00
q . Name = NaturalLanguageValuesNew ( )
q . Content = NaturalLanguageValuesNew ( )
2018-06-09 12:05:46 +00:00
return & q
2017-09-12 16:53:41 +00:00
}
2018-03-25 18:54:51 +00:00
// ActivityNew initializes a basic activity
2018-10-04 18:33:32 +00:00
func ActivityNew ( id ObjectID , typ ActivityVocabularyType , ob Item ) * Activity {
2019-05-16 09:08:27 +00:00
if ! ActivityTypes . Contains ( typ ) {
2018-06-09 12:05:46 +00:00
typ = ActivityType
2017-09-11 21:10:56 +00:00
}
2018-11-23 14:22:56 +00:00
a := Activity { Parent : Parent { ID : id , Type : typ } }
2019-02-21 16:54:11 +00:00
a . Name = NaturalLanguageValuesNew ( )
a . Content = NaturalLanguageValuesNew ( )
2017-09-12 15:26:37 +00:00
2017-10-03 20:46:03 +00:00
a . Object = ob
return & a
2017-09-12 15:26:37 +00:00
}
2018-03-25 18:54:51 +00:00
// IntransitiveActivityNew initializes a intransitive activity
2018-06-09 12:05:46 +00:00
func IntransitiveActivityNew ( id ObjectID , typ ActivityVocabularyType ) * IntransitiveActivity {
2019-05-16 09:08:27 +00:00
if ! IntransitiveActivityTypes . Contains ( typ ) {
2018-06-09 12:05:46 +00:00
typ = IntransitiveActivityType
2017-09-12 15:26:37 +00:00
}
2018-11-23 14:22:56 +00:00
i := IntransitiveActivity { Parent : Parent { ID : id , Type : typ } }
2019-02-21 16:54:11 +00:00
i . Name = NaturalLanguageValuesNew ( )
i . Content = NaturalLanguageValuesNew ( )
2017-09-11 21:10:56 +00:00
2018-06-09 12:05:46 +00:00
return & i
2017-09-11 21:10:56 +00:00
}
2018-06-05 18:59:04 +00:00
2019-05-26 20:25:44 +00:00
// Recipients performs recipient de-duplication on the Activity's To, Bto, CC and BCC properties
func ( a * Activity ) Recipients ( ) ItemCollection {
2018-10-04 18:33:32 +00:00
var actor ItemCollection
2018-06-05 18:59:04 +00:00
actor . Append ( a . Actor )
2019-05-26 20:25:44 +00:00
rec , _ := recipientsDeduplication ( & actor , & a . To , & a . Bto , & a . CC , & a . BCC , & a . Audience )
2019-05-26 20:29:34 +00:00
a . BCC = a . BCC [ : 0 ]
a . Bto = a . Bto [ : 0 ]
2019-05-26 20:25:44 +00:00
return rec
2018-06-05 18:59:04 +00:00
}
2018-10-02 09:22:38 +00:00
2019-05-26 20:25:44 +00:00
// Recipients performs recipient de-duplication on the Activity's To, Bto, CC and BCC properties
func ( i * IntransitiveActivity ) Recipients ( ) ItemCollection {
2018-10-04 18:33:32 +00:00
var actor ItemCollection
2018-06-05 18:59:04 +00:00
actor . Append ( i . Actor )
2019-05-26 20:25:44 +00:00
rec , _ := recipientsDeduplication ( & actor , & i . To , & i . Bto , & i . CC , & i . BCC , & i . Audience )
2019-05-26 20:29:34 +00:00
i . BCC = i . BCC [ : 0 ]
i . Bto = i . Bto [ : 0 ]
2019-05-26 20:25:44 +00:00
return rec
2018-06-05 18:59:04 +00:00
}
2018-10-02 09:22:38 +00:00
2019-05-26 20:25:44 +00:00
// Recipients performs recipient de-duplication on the Activity's To, Bto, CC and BCC properties
func ( b * Block ) Recipients ( ) ItemCollection {
2018-10-04 18:33:32 +00:00
var dedupObjects ItemCollection
2018-06-05 19:20:28 +00:00
dedupObjects . Append ( b . Actor )
dedupObjects . Append ( b . Object )
2019-05-26 20:25:44 +00:00
rec , _ := recipientsDeduplication ( & dedupObjects , & b . To , & b . Bto , & b . CC , & b . BCC , & b . Audience )
2019-05-26 20:29:34 +00:00
b . BCC = b . BCC [ : 0 ]
b . Bto = b . Bto [ : 0 ]
2019-05-26 20:25:44 +00:00
return rec
2018-06-05 19:20:28 +00:00
}
2018-09-06 13:41:53 +00:00
2019-05-26 20:25:44 +00:00
// Recipients performs recipient de-duplication on the Activity's To, Bto, CC and BCC properties
func ( c * Create ) Recipients ( ) ItemCollection {
2018-10-04 18:33:32 +00:00
var dedupObjects ItemCollection
2018-06-09 12:05:46 +00:00
dedupObjects . Append ( c . Actor )
dedupObjects . Append ( c . Object )
2019-05-26 20:25:44 +00:00
rec , _ := recipientsDeduplication ( & dedupObjects , & c . To , & c . Bto , & c . CC , & c . BCC , & c . Audience )
2019-05-26 20:29:34 +00:00
c . BCC = c . BCC [ : 0 ]
c . Bto = c . Bto [ : 0 ]
2019-05-26 20:25:44 +00:00
return rec
2018-06-09 12:05:46 +00:00
}
2018-07-20 16:07:36 +00:00
2019-05-26 20:25:44 +00:00
// Recipients performs recipient de-duplication on the Activity's To, Bto, CC and BCC properties
func ( l * Like ) Recipients ( ) ItemCollection {
2018-10-04 18:33:32 +00:00
var dedupObjects ItemCollection
2018-09-06 13:41:53 +00:00
dedupObjects . Append ( l . Actor )
dedupObjects . Append ( l . Object )
2019-05-26 20:25:44 +00:00
rec , _ := recipientsDeduplication ( & dedupObjects , & l . To , & l . Bto , & l . CC , & l . BCC , & l . Audience )
2019-05-26 20:29:34 +00:00
l . BCC = l . BCC [ : 0 ]
l . Bto = l . Bto [ : 0 ]
2019-05-26 20:25:44 +00:00
return rec
2018-09-06 13:41:53 +00:00
}
2019-05-26 20:25:44 +00:00
// Recipients performs recipient de-duplication on the Activity's To, Bto, CC and BCC properties
func ( d * Dislike ) Recipients ( ) ItemCollection {
2018-10-04 18:33:32 +00:00
var dedupObjects ItemCollection
2018-09-06 19:53:43 +00:00
dedupObjects . Append ( d . Actor )
dedupObjects . Append ( d . Object )
2019-05-26 20:25:44 +00:00
rec , _ := recipientsDeduplication ( & dedupObjects , & d . To , & d . Bto , & d . CC , & d . BCC , & d . Audience )
2019-05-26 20:29:34 +00:00
d . BCC = d . BCC [ : 0 ]
d . Bto = d . Bto [ : 0 ]
2019-05-26 20:25:44 +00:00
return rec
2018-09-06 19:53:43 +00:00
}
2019-05-26 20:25:44 +00:00
// Recipients performs recipient de-duplication on the Activity's To, Bto, CC and BCC properties
func ( u * Update ) Recipients ( ) ItemCollection {
2018-10-04 18:33:32 +00:00
var dedupObjects ItemCollection
2018-10-02 09:22:38 +00:00
dedupObjects . Append ( u . Actor )
dedupObjects . Append ( u . Object )
2019-05-26 20:25:44 +00:00
rec , _ := recipientsDeduplication ( & dedupObjects , & u . To , & u . Bto , & u . CC , & u . BCC , & u . Audience )
2019-05-26 20:29:34 +00:00
u . BCC = u . BCC [ : 0 ]
u . Bto = u . Bto [ : 0 ]
2019-05-26 20:25:44 +00:00
return rec
2018-10-02 09:22:38 +00:00
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Intransitive Activity
2018-07-20 16:07:36 +00:00
func ( i IntransitiveActivity ) GetType ( ) ActivityVocabularyType {
2018-06-09 12:05:46 +00:00
return i . Type
2018-06-09 11:06:55 +00:00
}
2018-07-20 16:07:36 +00:00
2018-11-05 16:32:09 +00:00
// IsLink returns false for Activity objects
2018-07-20 16:07:36 +00:00
func ( i IntransitiveActivity ) IsLink ( ) bool {
2018-06-09 11:06:55 +00:00
return false
}
2018-07-20 16:07:36 +00:00
2018-07-18 15:39:27 +00:00
// GetID returns the ObjectID corresponding to the IntransitiveActivity object
2018-07-25 09:47:03 +00:00
func ( i IntransitiveActivity ) GetID ( ) * ObjectID {
return & i . ID
2018-06-09 11:06:55 +00:00
}
2018-07-20 16:07:36 +00:00
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the IntransitiveActivity object
func ( i IntransitiveActivity ) GetLink ( ) IRI {
return IRI ( i . ID )
}
2018-11-05 16:32:09 +00:00
// IsObject returns true for Activity objects
2018-07-20 16:07:36 +00:00
func ( i IntransitiveActivity ) IsObject ( ) bool {
2018-06-09 11:06:55 +00:00
return true
}
2018-07-20 16:07:36 +00:00
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-07-20 16:07:36 +00:00
func ( a Activity ) GetType ( ) ActivityVocabularyType {
2018-06-09 12:05:46 +00:00
return a . Type
2018-06-09 11:06:55 +00:00
}
2018-07-20 16:07:36 +00:00
// IsLink returns false for Activity objects
func ( a Activity ) IsLink ( ) bool {
2018-06-09 11:06:55 +00:00
return false
}
2018-07-20 16:07:36 +00:00
// GetID returns the ObjectID corresponding to the Activity object
2018-07-25 09:47:03 +00:00
func ( a Activity ) GetID ( ) * ObjectID {
return & a . ID
2018-06-09 11:06:55 +00:00
}
2018-07-20 16:07:36 +00:00
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Activity object
func ( a Activity ) GetLink ( ) IRI {
return IRI ( a . ID )
}
2018-07-20 16:07:36 +00:00
// IsObject returns true for Activity objects
func ( a Activity ) IsObject ( ) bool {
2018-06-09 11:06:55 +00:00
return true
}
2018-07-20 16:07:36 +00:00
// GetID returns the ObjectID corresponding to the Like object
2018-07-25 09:47:03 +00:00
func ( l Like ) GetID ( ) * ObjectID {
2018-07-20 16:07:36 +00:00
return Activity ( l ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Like object
func ( l Like ) GetLink ( ) IRI {
return IRI ( l . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-07-20 16:28:26 +00:00
func ( l Like ) GetType ( ) ActivityVocabularyType {
return l . Type
2018-07-20 16:07:36 +00:00
}
2018-06-09 11:06:55 +00:00
2018-07-20 16:07:36 +00:00
// IsObject returns true for Like objects
func ( l Like ) IsObject ( ) bool {
return true
}
2018-07-20 16:28:26 +00:00
// IsLink returns false for Like objects
func ( l Like ) IsLink ( ) bool {
return false
}
2018-08-05 11:52:40 +00:00
// GetID returns the ObjectID corresponding to the Dislike object
2018-07-25 09:47:03 +00:00
func ( d Dislike ) GetID ( ) * ObjectID {
2018-07-20 16:28:26 +00:00
return Activity ( d ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Dislike object
func ( d Dislike ) GetLink ( ) IRI {
return IRI ( d . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-07-20 16:28:26 +00:00
func ( d Dislike ) GetType ( ) ActivityVocabularyType {
return d . Type
}
2018-07-20 16:07:36 +00:00
// IsObject returns true for Dislike objects
func ( d Dislike ) IsObject ( ) bool {
return true
2018-06-09 11:06:55 +00:00
}
2018-07-20 16:28:26 +00:00
// IsLink returns false for Dislike objects
func ( d Dislike ) IsLink ( ) bool {
return false
}
2018-07-24 21:11:08 +00:00
2018-08-05 11:52:40 +00:00
// GetID returns the ObjectID corresponding to the Accept object
func ( a Accept ) GetID ( ) * ObjectID {
return Activity ( a ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Accept object
func ( a Accept ) GetLink ( ) IRI {
return IRI ( a . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( a Accept ) GetType ( ) ActivityVocabularyType {
return a . Type
}
// IsObject returns true for Accept objects
func ( a Accept ) IsObject ( ) bool {
return true
}
// IsLink returns false for Accept objects
func ( a Accept ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Add object
func ( a Add ) GetID ( ) * ObjectID {
return Activity ( a ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Add object
func ( a Add ) GetLink ( ) IRI {
return IRI ( a . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( a Add ) GetType ( ) ActivityVocabularyType {
return a . Type
}
// IsObject returns true for Add objects
func ( a Add ) IsObject ( ) bool {
return true
}
// IsLink returns false for Add objects
func ( a Add ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Announce object
func ( a Announce ) GetID ( ) * ObjectID {
return Activity ( a ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Announce object
func ( a Announce ) GetLink ( ) IRI {
return IRI ( a . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( a Announce ) GetType ( ) ActivityVocabularyType {
return a . Type
}
// IsObject returns true for Announce objects
func ( a Announce ) IsObject ( ) bool {
return true
}
// IsLink returns false for Announce objects
func ( a Announce ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Arrive object
func ( a Arrive ) GetID ( ) * ObjectID {
return IntransitiveActivity ( a ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Arrive object
func ( a Arrive ) GetLink ( ) IRI {
return IRI ( a . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( a Arrive ) GetType ( ) ActivityVocabularyType {
return a . Type
}
// IsObject returns true for Arrive objects
func ( a Arrive ) IsObject ( ) bool {
return true
}
// IsLink returns false for Arrive objects
func ( a Arrive ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Block object
func ( b Block ) GetID ( ) * ObjectID {
return Activity ( b ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Block object
func ( b Block ) GetLink ( ) IRI {
return IRI ( b . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( b Block ) GetType ( ) ActivityVocabularyType {
return b . Type
}
// IsObject returns true for Block objects
func ( b Block ) IsObject ( ) bool {
return true
}
// IsLink returns false for Block objects
func ( b Block ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Create object
func ( c Create ) GetID ( ) * ObjectID {
return Activity ( c ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Create object
func ( c Create ) GetLink ( ) IRI {
return IRI ( c . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( c Create ) GetType ( ) ActivityVocabularyType {
return c . Type
}
// IsObject returns true for Create objects
func ( c Create ) IsObject ( ) bool {
return true
}
// IsLink returns false for Create objects
func ( c Create ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Delete object
func ( d Delete ) GetID ( ) * ObjectID {
return Activity ( d ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Delete object
func ( d Delete ) GetLink ( ) IRI {
return IRI ( d . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( d Delete ) GetType ( ) ActivityVocabularyType {
return d . Type
}
// IsObject returns true for Delete objects
func ( d Delete ) IsObject ( ) bool {
return true
}
// IsLink returns false for Delete objects
func ( d Delete ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Flag object
func ( f Flag ) GetID ( ) * ObjectID {
return Activity ( f ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Flag object
func ( f Flag ) GetLink ( ) IRI {
return IRI ( f . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( f Flag ) GetType ( ) ActivityVocabularyType {
return f . Type
}
// IsObject returns true for Flag objects
func ( f Flag ) IsObject ( ) bool {
return true
}
// IsLink returns false for Flag objects
func ( f Flag ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Follow object
func ( f Follow ) GetID ( ) * ObjectID {
return Activity ( f ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Follow object
func ( f Follow ) GetLink ( ) IRI {
return IRI ( f . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( f Follow ) GetType ( ) ActivityVocabularyType {
return f . Type
}
// IsObject returns true for Follow objects
func ( f Follow ) IsObject ( ) bool {
return true
}
// IsLink returns false for Follow objects
func ( f Follow ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Ignore object
func ( i Ignore ) GetID ( ) * ObjectID {
return Activity ( i ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Ignore object
func ( i Ignore ) GetLink ( ) IRI {
return IRI ( i . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( i Ignore ) GetType ( ) ActivityVocabularyType {
return i . Type
}
// IsObject returns true for Ignore objects
func ( i Ignore ) IsObject ( ) bool {
return true
}
// IsLink returns false for Ignore objects
func ( i Ignore ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Invite object
func ( i Invite ) GetID ( ) * ObjectID {
return Activity ( i ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Invite object
func ( i Invite ) GetLink ( ) IRI {
return IRI ( i . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( i Invite ) GetType ( ) ActivityVocabularyType {
return i . Type
}
// IsObject returns true for Invite objects
func ( i Invite ) IsObject ( ) bool {
return true
}
// IsLink returns false for Invite objects
func ( i Invite ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Join object
func ( j Join ) GetID ( ) * ObjectID {
return Activity ( j ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Join object
func ( j Join ) GetLink ( ) IRI {
return IRI ( j . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( j Join ) GetType ( ) ActivityVocabularyType {
return j . Type
}
// IsObject returns true for Join objects
func ( j Join ) IsObject ( ) bool {
return true
}
// IsLink returns false for Join objects
func ( j Join ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Leave object
func ( l Leave ) GetID ( ) * ObjectID {
return Activity ( l ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Leave object
func ( l Leave ) GetLink ( ) IRI {
return IRI ( l . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( l Leave ) GetType ( ) ActivityVocabularyType {
return l . Type
}
// IsObject returns true for Leave objects
func ( l Leave ) IsObject ( ) bool {
return true
}
// IsLink returns false for Leave objects
func ( l Leave ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Listen object
func ( l Listen ) GetID ( ) * ObjectID {
return Activity ( l ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Listen object
func ( l Listen ) GetLink ( ) IRI {
return IRI ( l . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( l Listen ) GetType ( ) ActivityVocabularyType {
return l . Type
}
// IsObject returns true for Listen objects
func ( l Listen ) IsObject ( ) bool {
return true
}
// IsLink returns false for Listen objects
func ( l Listen ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Move object
func ( m Move ) GetID ( ) * ObjectID {
return Activity ( m ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Move object
func ( m Move ) GetLink ( ) IRI {
return IRI ( m . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( m Move ) GetType ( ) ActivityVocabularyType {
return m . Type
}
// IsObject returns true for Move objects
func ( m Move ) IsObject ( ) bool {
return true
}
// IsLink returns false for Move objects
func ( m Move ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Offer object
func ( o Offer ) GetID ( ) * ObjectID {
return Activity ( o ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Offer object
func ( o Offer ) GetLink ( ) IRI {
return IRI ( o . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( o Offer ) GetType ( ) ActivityVocabularyType {
return o . Type
}
// IsObject returns true for Offer objects
func ( o Offer ) IsObject ( ) bool {
return true
}
// IsLink returns false for Offer objects
func ( o Offer ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Question object
func ( q Question ) GetID ( ) * ObjectID {
return & q . ID
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Question object
func ( q Question ) GetLink ( ) IRI {
return IRI ( q . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( q Question ) GetType ( ) ActivityVocabularyType {
return q . Type
}
// IsObject returns true for Question objects
func ( q Question ) IsObject ( ) bool {
return true
}
// IsLink returns false for Question objects
func ( q Question ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Reject object
func ( r Reject ) GetID ( ) * ObjectID {
return Activity ( r ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Reject object
func ( r Reject ) GetLink ( ) IRI {
return IRI ( r . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( r Reject ) GetType ( ) ActivityVocabularyType {
return r . Type
}
// IsObject returns true for Reject objects
func ( r Reject ) IsObject ( ) bool {
return true
}
// IsLink returns false for Reject objects
func ( r Reject ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Remove object
func ( r Remove ) GetID ( ) * ObjectID {
return Activity ( r ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Remove object
func ( r Remove ) GetLink ( ) IRI {
return IRI ( r . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( r Remove ) GetType ( ) ActivityVocabularyType {
return r . Type
}
// IsObject returns true for Remove objects
func ( r Remove ) IsObject ( ) bool {
return true
}
// IsLink returns false for Remove objects
func ( r Remove ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Read object
func ( r Read ) GetID ( ) * ObjectID {
return Activity ( r ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Read object
func ( r Read ) GetLink ( ) IRI {
return IRI ( r . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( r Read ) GetType ( ) ActivityVocabularyType {
return r . Type
}
// IsObject returns true for Read objects
func ( r Read ) IsObject ( ) bool {
return true
}
// IsLink returns false for Read objects
func ( r Read ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the TentativeAccept object
func ( t TentativeAccept ) GetID ( ) * ObjectID {
return Activity ( t ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the TentativeAccept object
func ( t TentativeAccept ) GetLink ( ) IRI {
return IRI ( t . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( t TentativeAccept ) GetType ( ) ActivityVocabularyType {
return t . Type
}
// IsObject returns true for TentativeAccept objects
func ( t TentativeAccept ) IsObject ( ) bool {
return true
}
// IsLink returns false for TentativeAccept objects
func ( t TentativeAccept ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the TentativeReject object
func ( t TentativeReject ) GetID ( ) * ObjectID {
return Activity ( t ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the TentativeReject object
func ( t TentativeReject ) GetLink ( ) IRI {
return IRI ( t . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( t TentativeReject ) GetType ( ) ActivityVocabularyType {
return t . Type
}
// IsObject returns true for TentativeReject objects
func ( t TentativeReject ) IsObject ( ) bool {
return true
}
// IsLink returns false for TentativeReject objects
func ( t TentativeReject ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Travel object
func ( t Travel ) GetID ( ) * ObjectID {
return IntransitiveActivity ( t ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Travel object
func ( t Travel ) GetLink ( ) IRI {
return IRI ( t . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( t Travel ) GetType ( ) ActivityVocabularyType {
return t . Type
}
// IsObject returns true for Travel objects
func ( t Travel ) IsObject ( ) bool {
return true
}
// IsLink returns false for Travel objects
func ( t Travel ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Undo object
func ( u Undo ) GetID ( ) * ObjectID {
return Activity ( u ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Unto object
func ( u Undo ) GetLink ( ) IRI {
return IRI ( u . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( u Undo ) GetType ( ) ActivityVocabularyType {
return u . Type
}
// IsObject returns true for Undo objects
func ( u Undo ) IsObject ( ) bool {
return true
}
// IsLink returns false for Undo objects
func ( u Undo ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the Update object
func ( u Update ) GetID ( ) * ObjectID {
return Activity ( u ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the Update object
func ( u Update ) GetLink ( ) IRI {
return IRI ( u . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( u Update ) GetType ( ) ActivityVocabularyType {
return u . Type
}
// IsObject returns true for Update objects
func ( u Update ) IsObject ( ) bool {
return true
}
// IsLink returns false for Update objects
func ( u Update ) IsLink ( ) bool {
return false
}
// GetID returns the ObjectID corresponding to the View object
func ( v View ) GetID ( ) * ObjectID {
return Activity ( v ) . GetID ( )
}
2018-10-11 18:48:38 +00:00
// GetLink returns the IRI corresponding to the View object
func ( v View ) GetLink ( ) IRI {
return IRI ( v . ID )
}
2018-11-05 16:32:09 +00:00
// GetType returns the ActivityVocabulary type of the current Activity
2018-08-05 11:52:40 +00:00
func ( v View ) GetType ( ) ActivityVocabularyType {
return v . Type
}
// IsObject returns true for View objects
func ( v View ) IsObject ( ) bool {
return true
}
// IsLink returns false for View objects
func ( v View ) IsLink ( ) bool {
return false
}
2018-08-31 15:55:41 +00:00
// UnmarshalJSON
func ( a * Activity ) UnmarshalJSON ( data [ ] byte ) error {
2018-12-02 15:50:40 +00:00
a . Parent . UnmarshalJSON ( data )
2019-01-30 15:19:29 +00:00
a . Actor = JSONGetItem ( data , "actor" )
a . Object = JSONGetItem ( data , "object" )
2019-05-04 22:15:23 +00:00
a . Target = JSONGetItem ( data , "target" )
a . Instrument = JSONGetItem ( data , "instrument" )
a . Origin = JSONGetItem ( data , "origin" )
a . Result = JSONGetItem ( data , "result" )
2018-08-31 15:55:41 +00:00
return nil
}
2018-10-11 09:26:00 +00:00
// UnmarshalJSON
func ( l * Like ) UnmarshalJSON ( data [ ] byte ) error {
a := Activity ( * l )
err := a . UnmarshalJSON ( data )
* l = Like ( a )
return err
}
// UnmarshalJSON
func ( d * Dislike ) UnmarshalJSON ( data [ ] byte ) error {
a := Activity ( * d )
err := a . UnmarshalJSON ( data )
* d = Dislike ( a )
return err
}
// UnmarshalJSON
func ( u * Update ) UnmarshalJSON ( data [ ] byte ) error {
a := Activity ( * u )
err := a . UnmarshalJSON ( data )
* u = Update ( a )
return err
}
// UnmarshalJSON
func ( c * Create ) UnmarshalJSON ( data [ ] byte ) error {
2019-05-18 20:45:54 +00:00
if ItemTyperFunc == nil {
ItemTyperFunc = JSONGetItemByType
}
2018-10-11 09:26:00 +00:00
a := Activity ( * c )
err := a . UnmarshalJSON ( data )
* c = Create ( a )
return err
}
2019-05-04 22:52:14 +00:00
// ToActivity
2019-05-07 21:11:15 +00:00
func ToActivity ( it Item ) ( * Activity , error ) {
2019-05-04 22:52:14 +00:00
switch i := it . ( type ) {
case * Activity :
2019-05-07 21:11:15 +00:00
return i , nil
2019-05-04 22:52:14 +00:00
case Activity :
2019-05-07 21:11:15 +00:00
return & i , nil
2019-05-05 12:25:55 +00:00
case * Accept :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Accept :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Add :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Add :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Announce :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Announce :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Block :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Block :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-04 22:52:14 +00:00
case * Create :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-04 22:52:14 +00:00
case Create :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Delete :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Delete :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Dislike :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Dislike :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Flag :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Flag :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Follow :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Follow :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Ignore :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Ignore :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Invite :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Invite :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Join :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Join :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Leave :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Leave :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Like :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Like :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Listen :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Listen :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Move :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Move :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Offer :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Offer :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Reject :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Reject :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Read :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Read :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Remove :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Remove :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * TentativeAccept :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case TentativeAccept :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * TentativeReject :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case TentativeReject :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Undo :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Undo :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * Update :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case Update :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case * View :
var a Activity
a = Activity ( * i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-05 12:25:55 +00:00
case View :
var a Activity
a = Activity ( i )
2019-05-07 21:11:15 +00:00
return & a , nil
2019-05-04 22:52:14 +00:00
}
2019-05-07 21:11:15 +00:00
return nil , errors . New ( "unable to convert activity" )
2019-05-04 22:52:14 +00:00
}
2019-05-11 08:31:19 +00:00
2019-08-20 19:49:58 +00:00
// ToActivity
func ToIntransitiveActivity ( it Item ) ( * IntransitiveActivity , error ) {
switch i := it . ( type ) {
case * IntransitiveActivity :
return i , nil
case IntransitiveActivity :
return & i , nil
case * Arrive :
var it IntransitiveActivity
it = IntransitiveActivity ( * i )
return & it , nil
case Arrive :
var it IntransitiveActivity
it = IntransitiveActivity ( i )
return & it , nil
case * Travel :
var it IntransitiveActivity
it = IntransitiveActivity ( * i )
return & it , nil
case Travel :
var it IntransitiveActivity
it = IntransitiveActivity ( i )
return & it , nil
}
return nil , errors . New ( "unable to convert activity" )
}
2019-05-11 09:53:32 +00:00
// FlattenIntransitiveActivityProperties flattens the IntransitiveActivity's properties from Object type to IRI
2019-06-11 16:08:39 +00:00
func FlattenIntransitiveActivityProperties ( act * IntransitiveActivity ) * IntransitiveActivity {
2019-05-11 09:53:32 +00:00
act . Actor = FlattenToIRI ( act . Actor )
act . Target = FlattenToIRI ( act . Target )
act . Result = FlattenToIRI ( act . Result )
act . Origin = FlattenToIRI ( act . Origin )
act . Result = FlattenToIRI ( act . Result )
act . Instrument = FlattenToIRI ( act . Instrument )
2019-05-11 08:31:19 +00:00
return act
}
2019-05-11 09:53:32 +00:00
// FlattenActivityProperties flattens the Activity's properties from Object type to IRI
2019-06-11 16:08:39 +00:00
func FlattenActivityProperties ( act * Activity ) * Activity {
2019-05-11 09:53:32 +00:00
act . Object = FlattenToIRI ( act . Object )
act . Actor = FlattenToIRI ( act . Actor )
act . Target = FlattenToIRI ( act . Target )
act . Result = FlattenToIRI ( act . Result )
act . Origin = FlattenToIRI ( act . Origin )
act . Result = FlattenToIRI ( act . Result )
act . Instrument = FlattenToIRI ( act . Instrument )
2019-05-11 08:31:19 +00:00
return act
}