mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
Dereference remote replies (#132)
* decided where to put reply dereferencing * fiddling with dereferencing threads * further adventures * tidy up some stuff * move dereferencing functionality * a bunch of refactoring * go fmt * more refactoring * bleep bloop * docs and linting * start implementing replies collection on gts side * fiddling around * allow dereferencing our replies * lint, fmt
This commit is contained in:
321
internal/ap/interfaces.go
Normal file
321
internal/ap/interfaces.go
Normal file
@@ -0,0 +1,321 @@
|
||||
/*
|
||||
GoToSocial
|
||||
Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package ap
|
||||
|
||||
import "github.com/go-fed/activity/streams/vocab"
|
||||
|
||||
// Accountable represents the minimum activitypub interface for representing an 'account'.
|
||||
// This interface is fulfilled by: Person, Application, Organization, Service, and Group
|
||||
type Accountable interface {
|
||||
WithJSONLDId
|
||||
WithTypeName
|
||||
|
||||
WithPreferredUsername
|
||||
WithIcon
|
||||
WithName
|
||||
WithImage
|
||||
WithSummary
|
||||
WithDiscoverable
|
||||
WithURL
|
||||
WithPublicKey
|
||||
WithInbox
|
||||
WithOutbox
|
||||
WithFollowing
|
||||
WithFollowers
|
||||
WithFeatured
|
||||
}
|
||||
|
||||
// Statusable represents the minimum activitypub interface for representing a 'status'.
|
||||
// This interface is fulfilled by: Article, Document, Image, Video, Note, Page, Event, Place, Mention, Profile
|
||||
type Statusable interface {
|
||||
WithJSONLDId
|
||||
WithTypeName
|
||||
|
||||
WithSummary
|
||||
WithInReplyTo
|
||||
WithPublished
|
||||
WithURL
|
||||
WithAttributedTo
|
||||
WithTo
|
||||
WithCC
|
||||
WithSensitive
|
||||
WithConversation
|
||||
WithContent
|
||||
WithAttachment
|
||||
WithTag
|
||||
WithReplies
|
||||
}
|
||||
|
||||
// Attachmentable represents the minimum activitypub interface for representing a 'mediaAttachment'.
|
||||
// This interface is fulfilled by: Audio, Document, Image, Video
|
||||
type Attachmentable interface {
|
||||
WithTypeName
|
||||
WithMediaType
|
||||
WithURL
|
||||
WithName
|
||||
}
|
||||
|
||||
// Hashtaggable represents the minimum activitypub interface for representing a 'hashtag' tag.
|
||||
type Hashtaggable interface {
|
||||
WithTypeName
|
||||
WithHref
|
||||
WithName
|
||||
}
|
||||
|
||||
// Emojiable represents the minimum interface for an 'emoji' tag.
|
||||
type Emojiable interface {
|
||||
WithJSONLDId
|
||||
WithTypeName
|
||||
WithName
|
||||
WithUpdated
|
||||
WithIcon
|
||||
}
|
||||
|
||||
// Mentionable represents the minimum interface for a 'mention' tag.
|
||||
type Mentionable interface {
|
||||
WithName
|
||||
WithHref
|
||||
}
|
||||
|
||||
// Followable represents the minimum interface for an activitystreams 'follow' activity.
|
||||
type Followable interface {
|
||||
WithJSONLDId
|
||||
WithTypeName
|
||||
|
||||
WithActor
|
||||
WithObject
|
||||
}
|
||||
|
||||
// Likeable represents the minimum interface for an activitystreams 'like' activity.
|
||||
type Likeable interface {
|
||||
WithJSONLDId
|
||||
WithTypeName
|
||||
|
||||
WithActor
|
||||
WithObject
|
||||
}
|
||||
|
||||
// Blockable represents the minimum interface for an activitystreams 'block' activity.
|
||||
type Blockable interface {
|
||||
WithJSONLDId
|
||||
WithTypeName
|
||||
|
||||
WithActor
|
||||
WithObject
|
||||
}
|
||||
|
||||
// Announceable represents the minimum interface for an activitystreams 'announce' activity.
|
||||
type Announceable interface {
|
||||
WithJSONLDId
|
||||
WithTypeName
|
||||
|
||||
WithActor
|
||||
WithObject
|
||||
WithPublished
|
||||
WithTo
|
||||
WithCC
|
||||
}
|
||||
|
||||
// CollectionPageable represents the minimum interface for an activitystreams 'CollectionPage' object.
|
||||
type CollectionPageable interface {
|
||||
WithJSONLDId
|
||||
WithTypeName
|
||||
|
||||
WithNext
|
||||
WithPartOf
|
||||
WithItems
|
||||
}
|
||||
|
||||
// WithJSONLDId represents an activity with JSONLDIdProperty
|
||||
type WithJSONLDId interface {
|
||||
GetJSONLDId() vocab.JSONLDIdProperty
|
||||
}
|
||||
|
||||
// WithTypeName represents an activity with a type name
|
||||
type WithTypeName interface {
|
||||
GetTypeName() string
|
||||
}
|
||||
|
||||
// WithPreferredUsername represents an activity with ActivityStreamsPreferredUsernameProperty
|
||||
type WithPreferredUsername interface {
|
||||
GetActivityStreamsPreferredUsername() vocab.ActivityStreamsPreferredUsernameProperty
|
||||
}
|
||||
|
||||
// WithIcon represents an activity with ActivityStreamsIconProperty
|
||||
type WithIcon interface {
|
||||
GetActivityStreamsIcon() vocab.ActivityStreamsIconProperty
|
||||
}
|
||||
|
||||
// WithName represents an activity with ActivityStreamsNameProperty
|
||||
type WithName interface {
|
||||
GetActivityStreamsName() vocab.ActivityStreamsNameProperty
|
||||
}
|
||||
|
||||
// WithImage represents an activity with ActivityStreamsImageProperty
|
||||
type WithImage interface {
|
||||
GetActivityStreamsImage() vocab.ActivityStreamsImageProperty
|
||||
}
|
||||
|
||||
// WithSummary represents an activity with ActivityStreamsSummaryProperty
|
||||
type WithSummary interface {
|
||||
GetActivityStreamsSummary() vocab.ActivityStreamsSummaryProperty
|
||||
}
|
||||
|
||||
// WithDiscoverable represents an activity with TootDiscoverableProperty
|
||||
type WithDiscoverable interface {
|
||||
GetTootDiscoverable() vocab.TootDiscoverableProperty
|
||||
}
|
||||
|
||||
// WithURL represents an activity with ActivityStreamsUrlProperty
|
||||
type WithURL interface {
|
||||
GetActivityStreamsUrl() vocab.ActivityStreamsUrlProperty
|
||||
}
|
||||
|
||||
// WithPublicKey represents an activity with W3IDSecurityV1PublicKeyProperty
|
||||
type WithPublicKey interface {
|
||||
GetW3IDSecurityV1PublicKey() vocab.W3IDSecurityV1PublicKeyProperty
|
||||
}
|
||||
|
||||
// WithInbox represents an activity with ActivityStreamsInboxProperty
|
||||
type WithInbox interface {
|
||||
GetActivityStreamsInbox() vocab.ActivityStreamsInboxProperty
|
||||
}
|
||||
|
||||
// WithOutbox represents an activity with ActivityStreamsOutboxProperty
|
||||
type WithOutbox interface {
|
||||
GetActivityStreamsOutbox() vocab.ActivityStreamsOutboxProperty
|
||||
}
|
||||
|
||||
// WithFollowing represents an activity with ActivityStreamsFollowingProperty
|
||||
type WithFollowing interface {
|
||||
GetActivityStreamsFollowing() vocab.ActivityStreamsFollowingProperty
|
||||
}
|
||||
|
||||
// WithFollowers represents an activity with ActivityStreamsFollowersProperty
|
||||
type WithFollowers interface {
|
||||
GetActivityStreamsFollowers() vocab.ActivityStreamsFollowersProperty
|
||||
}
|
||||
|
||||
// WithFeatured represents an activity with TootFeaturedProperty
|
||||
type WithFeatured interface {
|
||||
GetTootFeatured() vocab.TootFeaturedProperty
|
||||
}
|
||||
|
||||
// WithAttributedTo represents an activity with ActivityStreamsAttributedToProperty
|
||||
type WithAttributedTo interface {
|
||||
GetActivityStreamsAttributedTo() vocab.ActivityStreamsAttributedToProperty
|
||||
}
|
||||
|
||||
// WithAttachment represents an activity with ActivityStreamsAttachmentProperty
|
||||
type WithAttachment interface {
|
||||
GetActivityStreamsAttachment() vocab.ActivityStreamsAttachmentProperty
|
||||
}
|
||||
|
||||
// WithTo represents an activity with ActivityStreamsToProperty
|
||||
type WithTo interface {
|
||||
GetActivityStreamsTo() vocab.ActivityStreamsToProperty
|
||||
}
|
||||
|
||||
// WithInReplyTo represents an activity with ActivityStreamsInReplyToProperty
|
||||
type WithInReplyTo interface {
|
||||
GetActivityStreamsInReplyTo() vocab.ActivityStreamsInReplyToProperty
|
||||
}
|
||||
|
||||
// WithCC represents an activity with ActivityStreamsCcProperty
|
||||
type WithCC interface {
|
||||
GetActivityStreamsCc() vocab.ActivityStreamsCcProperty
|
||||
}
|
||||
|
||||
// WithSensitive ...
|
||||
type WithSensitive interface {
|
||||
// TODO
|
||||
}
|
||||
|
||||
// WithConversation ...
|
||||
type WithConversation interface {
|
||||
// TODO
|
||||
}
|
||||
|
||||
// WithContent represents an activity with ActivityStreamsContentProperty
|
||||
type WithContent interface {
|
||||
GetActivityStreamsContent() vocab.ActivityStreamsContentProperty
|
||||
}
|
||||
|
||||
// WithPublished represents an activity with ActivityStreamsPublishedProperty
|
||||
type WithPublished interface {
|
||||
GetActivityStreamsPublished() vocab.ActivityStreamsPublishedProperty
|
||||
}
|
||||
|
||||
// WithTag represents an activity with ActivityStreamsTagProperty
|
||||
type WithTag interface {
|
||||
GetActivityStreamsTag() vocab.ActivityStreamsTagProperty
|
||||
}
|
||||
|
||||
// WithReplies represents an activity with ActivityStreamsRepliesProperty
|
||||
type WithReplies interface {
|
||||
GetActivityStreamsReplies() vocab.ActivityStreamsRepliesProperty
|
||||
}
|
||||
|
||||
// WithMediaType represents an activity with ActivityStreamsMediaTypeProperty
|
||||
type WithMediaType interface {
|
||||
GetActivityStreamsMediaType() vocab.ActivityStreamsMediaTypeProperty
|
||||
}
|
||||
|
||||
// type withBlurhash interface {
|
||||
// GetTootBlurhashProperty() vocab.TootBlurhashProperty
|
||||
// }
|
||||
|
||||
// type withFocalPoint interface {
|
||||
// // TODO
|
||||
// }
|
||||
|
||||
// WithHref represents an activity with ActivityStreamsHrefProperty
|
||||
type WithHref interface {
|
||||
GetActivityStreamsHref() vocab.ActivityStreamsHrefProperty
|
||||
}
|
||||
|
||||
// WithUpdated represents an activity with ActivityStreamsUpdatedProperty
|
||||
type WithUpdated interface {
|
||||
GetActivityStreamsUpdated() vocab.ActivityStreamsUpdatedProperty
|
||||
}
|
||||
|
||||
// WithActor represents an activity with ActivityStreamsActorProperty
|
||||
type WithActor interface {
|
||||
GetActivityStreamsActor() vocab.ActivityStreamsActorProperty
|
||||
}
|
||||
|
||||
// WithObject represents an activity with ActivityStreamsObjectProperty
|
||||
type WithObject interface {
|
||||
GetActivityStreamsObject() vocab.ActivityStreamsObjectProperty
|
||||
}
|
||||
|
||||
// WithNext represents an activity with ActivityStreamsNextProperty
|
||||
type WithNext interface {
|
||||
GetActivityStreamsNext() vocab.ActivityStreamsNextProperty
|
||||
}
|
||||
|
||||
// WithPartOf represents an activity with ActivityStreamsPartOfProperty
|
||||
type WithPartOf interface {
|
||||
GetActivityStreamsPartOf() vocab.ActivityStreamsPartOfProperty
|
||||
}
|
||||
|
||||
// WithItems represents an activity with ActivityStreamsItemsProperty
|
||||
type WithItems interface {
|
||||
GetActivityStreamsItems() vocab.ActivityStreamsItemsProperty
|
||||
}
|
Reference in New Issue
Block a user