Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type InteractionPolicy ¶
type InteractionPolicy struct { // Conditions in which a Like // interaction will be accepted // for an item with this policy. CanLike PolicyRules // Conditions in which a Reply // interaction will be accepted // for an item with this policy. CanReply PolicyRules // Conditions in which an Announce // interaction will be accepted // for an item with this policy. CanAnnounce PolicyRules }
An InteractionPolicy determines which interactions will be accepted for an item, and according to what rules.
type PolicyRules ¶
type PolicyRules struct { // Always is for PolicyValues who are // permitted to do an interaction // without requiring approval. Always PolicyValues // WithApproval is for PolicyValues who // are conditionally permitted to do // an interaction, pending approval. WithApproval PolicyValues }
PolicyRules represents the rules according to which a certain interaction is permitted to various Actor and Actor Collection URIs.
type PolicyValue ¶
type PolicyValue string
A policy URI is GoToSocial's internal representation of one ActivityPub URI for an Actor or a Collection of Actors, specific to the domain of enforcing interaction policies.
A PolicyValue can be stored in the database either as one of the Value constants defined below (to save space), OR as a full-fledged ActivityPub URI.
A PolicyValue should be translated to the canonical string value of the represented URI when federating an item, or from the canonical string value of the URI when receiving or retrieving an item.
For example, if the PolicyValue `followers` was being federated outwards in an interaction policy attached to an item created by the actor `https://example.org/users/someone`, then it should be translated to their followers URI when sent, eg., `https://example.org/users/someone/followers`.
Likewise, if GoToSocial receives an item with an interaction policy containing `https://example.org/users/someone/followers`, and the item was created by `https://example.org/users/someone`, then the followers URI would be converted to `followers` for internal storage.
const ( // Stand-in for ActivityPub magic public URI, // which encompasses every possible Actor URI. PolicyValuePublic PolicyValue = "public" // Stand-in for the Followers Collection of // the item owner's Actor. PolicyValueFollowers PolicyValue = "followers" // Stand-in for the Following Collection of // the item owner's Actor. PolicyValueFollowing PolicyValue = "following" // Stand-in for the Mutuals Collection of // the item owner's Actor. // // (TODO: Reserved, currently unused). PolicyValueMutuals PolicyValue = "mutuals" // Stand-in for Actor URIs tagged in the item. PolicyValueMentioned PolicyValue = "mentioned" // Stand-in for the Actor URI of the item owner. PolicyValueAuthor PolicyValue = "author" )
type PolicyValues ¶
type PolicyValues []PolicyValue
type Status ¶
type Status struct { ID string `bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated FetchedAt time.Time `bun:"type:timestamptz,nullzero"` // when was item (remote) last fetched. PinnedAt time.Time `bun:"type:timestamptz,nullzero"` // Status was pinned by owning account at this time. URI string `bun:",unique,nullzero,notnull"` // activitypub URI of this status URL string `bun:",nullzero"` // web url for viewing this status Content string `bun:""` // content of this status; likely html-formatted but not guaranteed AttachmentIDs []string `bun:"attachments,array"` // Database IDs of any media attachments associated with this status TagIDs []string `bun:"tags,array"` // Database IDs of any tags used in this status MentionIDs []string `bun:"mentions,array"` // Database IDs of any mentions in this status EmojiIDs []string `bun:"emojis,array"` // Database IDs of any emojis used in this status Local *bool `bun:",nullzero,notnull,default:false"` // is this status from a local account? AccountID string `bun:"type:CHAR(26),nullzero,notnull"` // which account posted this status? AccountURI string `bun:",nullzero,notnull"` // activitypub uri of the owner of this status InReplyToID string `bun:"type:CHAR(26),nullzero"` // id of the status this status replies to InReplyToURI string `bun:",nullzero"` // activitypub uri of the status this status is a reply to InReplyToAccountID string `bun:"type:CHAR(26),nullzero"` // id of the account that this status replies to InReplyTo *Status `bun:"-"` // status corresponding to inReplyToID BoostOfID string `bun:"type:CHAR(26),nullzero"` // id of the status this status is a boost of BoostOfURI string `bun:"-"` // URI of the status this status is a boost of; field not inserted in the db, just for dereferencing purposes. BoostOfAccountID string `bun:"type:CHAR(26),nullzero"` // id of the account that owns the boosted status BoostOf *Status `bun:"-"` // status that corresponds to boostOfID ThreadID string `bun:"type:CHAR(26),nullzero"` // id of the thread to which this status belongs; only set for remote statuses if a local account is involved at some point in the thread, otherwise null EditIDs []string `bun:"edits,array"` // PollID string `bun:"type:CHAR(26),nullzero"` // ContentWarning string `bun:",nullzero"` // cw string for this status Visibility Visibility `bun:",nullzero,notnull"` // visibility entry for this status Sensitive *bool `bun:",nullzero,notnull,default:false"` // mark the status as sensitive? Language string `bun:",nullzero"` // what language is this status written in? CreatedWithApplicationID string `bun:"type:CHAR(26),nullzero"` // Which application was used to create this status? ActivityStreamsType string `bun:",nullzero,notnull"` // What is the activitystreams type of this status? See: https://www.w3.org/TR/activitystreams-vocabulary/#object-types. Will probably almost always be Note but who knows!. Text string `bun:""` // Original text of the status without formatting Federated *bool `bun:",notnull"` // This status will be federated beyond the local timeline(s) InteractionPolicy *InteractionPolicy `bun:""` // InteractionPolicy for this status. If null then the default InteractionPolicy should be assumed for this status's Visibility. Always null for boost wrappers. PendingApproval *bool `bun:",nullzero,notnull,default:false"` // If true then status is a reply or boost wrapper that must be Approved by the reply-ee or boost-ee before being fully distributed. PreApproved bool `bun:"-"` // If true, then status is a reply to or boost wrapper of a status on our instance, has permission to do the interaction, and an Accept should be sent out for it immediately. Field not stored in the DB. ApprovedByURI string `bun:",nullzero"` // URI of an Accept Activity that approves the Announce or Create Activity that this status was/will be attached to. }
Status represents a user-created 'post' or 'status' in the database, either remote or local
type Visibility ¶
type Visibility enumType
Visibility represents the visibility granularity of a status.
const ( // VisibilityNone means nobody can see this. // It's only used for web status visibility. VisibilityNone Visibility = 1 // VisibilityPublic means this status will // be visible to everyone on all timelines. VisibilityPublic Visibility = 2 // VisibilityUnlocked means this status will be visible to everyone, // but will only show on home timeline to followers, and in lists. VisibilityUnlocked Visibility = 3 // VisibilityFollowersOnly means this status is viewable to followers only. VisibilityFollowersOnly Visibility = 4 // VisibilityMutualsOnly means this status // is visible to mutual followers only. VisibilityMutualsOnly Visibility = 5 // VisibilityDirect means this status is // visible only to mentioned recipients. VisibilityDirect Visibility = 6 // VisibilityDefault is used when no other setting can be found. VisibilityDefault Visibility = VisibilityUnlocked )