Documentation
¶
Index ¶
- Constants
- Variables
- func StreamAddFilterKeywordHandler(repo FilterStorer) warpnet.WarpHandlerFunc
- func StreamAuthorizeFollowRequestHandler(repo FollowingStorer) warpnet.WarpHandlerFunc
- func StreamBlockHandler(repo BlocksStorer, userRepo BlockUserFetcher, nodeRepo PeerBlocklister) warpnet.WarpHandlerFunc
- func StreamBookmarkHandler(repo BookmarkStorer) warpnet.WarpHandlerFunc
- func StreamCreateChatHandler(repo ChatStorer, userRepo ChatUserFetcher, streamer ChatStreamer) warpnet.WarpHandlerFunc
- func StreamDeleteChatHandler(repo ChatStorer, authRepo ChatAuthStorer) warpnet.WarpHandlerFunc
- func StreamDeleteFilterHandler(repo FilterStorer) warpnet.WarpHandlerFunc
- func StreamDeleteFilterKeywordHandler(repo FilterStorer) warpnet.WarpHandlerFunc
- func StreamDeleteMessageHandler(repo ChatStorer, authRepo OwnerChatsStorer) warpnet.WarpHandlerFunc
- func StreamDeleteTweetHandler(broadcaster TweetBroadcaster, authRepo OwnerTweetStorer, repo TweetsStorer, ...) warpnet.WarpHandlerFunc
- func StreamEditTweetHandler(repo TweetsStorer, timelineRepo TimelineUpdater) warpnet.WarpHandlerFunc
- func StreamFollowHandler(broadcaster FollowingBroadcaster, followRepo FollowingStorer, ...) warpnet.WarpHandlerFunc
- func StreamGetBlocksHandler(repo BlocksStorer) warpnet.WarpHandlerFunc
- func StreamGetBookmarksHandler(repo BookmarkStorer) warpnet.WarpHandlerFunc
- func StreamGetFilterHandler(repo FilterStorer) warpnet.WarpHandlerFunc
- func StreamGetFiltersHandler(repo FilterStorer) warpnet.WarpHandlerFunc
- func StreamGetFollowRequestsHandler(repo FollowingStorer) warpnet.WarpHandlerFunc
- func StreamGetFollowersHandler(authRepo FollowingAuthStorer, userRepo FollowingUserStorer, ...) warpnet.WarpHandlerFunc
- func StreamGetFollowingsHandler(authRepo FollowingAuthStorer, userRepo FollowingUserStorer, ...) warpnet.WarpHandlerFunc
- func StreamGetImageHandler(streamer MediaStreamer, mediaRepo MediaStorer, userRepo MediaUserFetcher) warpnet.WarpHandlerFunc
- func StreamGetInfoHandler(i NodeInformer, discHandler discovery.DiscoveryHandler) warpnet.WarpHandlerFunc
- func StreamGetLikesHandler(repo LikedTweetsLister) warpnet.WarpHandlerFunc
- func StreamGetMediaHandler(repo MediaMetaStorer) warpnet.WarpHandlerFunc
- func StreamGetMessageHandler(repo ChatStorer, authRepo OwnerChatsStorer) warpnet.WarpHandlerFunc
- func StreamGetMessagesHandler(repo ChatStorer, authRepo OwnerChatsStorer) warpnet.WarpHandlerFunc
- func StreamGetMutesHandler(repo MutesStorer) warpnet.WarpHandlerFunc
- func StreamGetNotificationHandler(repo NotifierGetter, authRepo NotifierAuthStorer) warpnet.WarpHandlerFunc
- func StreamGetNotificationSettingsHandler(repo SettingsStorer, authRepo SettingsAuthStorer) warpnet.WarpHandlerFunc
- func StreamGetNotificationsHandler(repo NotifierFetcher, authRepo NotifierAuthStorer) warpnet.WarpHandlerFunc
- func StreamGetPushesHandler(repo NotifierFetcher, authRepo NotifierAuthStorer) warpnet.WarpHandlerFunc
- func StreamGetStatsHandler(i MetricsNodeInformer, db MetricsProvider) warpnet.WarpHandlerFunc
- func StreamGetTweetHandler(repo TweetsStorer, authRepo OwnerTweetStorer, userRepo TweetUserFetcher, ...) warpnet.WarpHandlerFunc
- func StreamGetTweetLikersHandler(repo LikersLister, userRepo LikedUserFetcher, streamer EngagementStreamer) warpnet.WarpHandlerFunc
- func StreamGetTweetRetweetersHandler(repo RetweetersLister, userRepo LikedUserFetcher, streamer EngagementStreamer) warpnet.WarpHandlerFunc
- func StreamGetTweetStatsHandler(tweetRepo TweetsStorer, likeRepo LikeTweetStorer, ...) warpnet.WarpHandlerFunc
- func StreamGetTweetsHandler(repo TweetsStorer, userRepo TweetUserFetcher, streamer TweetStreamer) warpnet.WarpHandlerFunc
- func StreamGetUserChatHandler(repo ChatStorer, authRepo ChatAuthStorer) warpnet.WarpHandlerFunc
- func StreamGetUserChatsHandler(repo ChatStorer, authRepo OwnerChatsStorer) warpnet.WarpHandlerFunc
- func StreamGetUserHandler(tweetRepo UserTweetsCounter, followRepo UserFollowsCounter, repo UserFetcher, ...) warpnet.WarpHandlerFunc
- func StreamGetUsersHandler(userRepo UserFetcher, streamer UserStreamer) warpnet.WarpHandlerFunc
- func StreamGetWhoToFollowHandler(authRepo UserAuthStorer, userRepo UserFetcher, followRepo UserFollowsCounter) warpnet.WarpHandlerFunc
- func StreamImportTweetHandler(info MediaNodeInformer, tweetRepo ImportTweetStorer, mediaRepo MediaStorer, ...) warpnet.WarpHandlerFunc
- func StreamIsFollowerHandler(followRepo FollowingStorer, authRepo FollowingAuthStorer) warpnet.WarpHandlerFunc
- func StreamIsFollowingHandler(followRepo FollowingStorer, authRepo FollowingAuthStorer) warpnet.WarpHandlerFunc
- func StreamLikeHandler(repo LikesStorer, userRepo LikedUserFetcher, notifyRepo ModerationNotifier, ...) warpnet.WarpHandlerFunc
- func StreamMarkAllNotificationsReadHandler(repo NotifierAllMarker, authRepo NotifierAuthStorer) warpnet.WarpHandlerFunc
- func StreamMarkNotificationReadHandler(repo NotifierMarker, authRepo NotifierAuthStorer) warpnet.WarpHandlerFunc
- func StreamModerationResultHandler(notifier ModerationNotifier, tweetRepo ModerationTweetUpdater, ...) warpnet.WarpHandlerFunc
- func StreamMuteHandler(repo MutesStorer) warpnet.WarpHandlerFunc
- func StreamNewFilterHandler(repo FilterStorer) warpnet.WarpHandlerFunc
- func StreamNewMessageHandler(repo ChatStorer, userRepo ChatUserFetcher, notifyRepo ModerationNotifier, ...) warpnet.WarpHandlerFunc
- func StreamNewReTweetHandler(userRepo RetweetedUserFetcher, tweetRepo ReTweetsStorer, ...) warpnet.WarpHandlerFunc
- func StreamNewTweetHandler(broadcaster TweetBroadcaster, authRepo OwnerTweetStorer, ...) warpnet.WarpHandlerFunc
- func StreamNodesPairingHandler(authRepo PairAuthStorer, deviceRepo DeviceStorer, n NodeAddresser) warpnet.WarpHandlerFunc
- func StreamPinTweetHandler(repo TweetsStorer) warpnet.WarpHandlerFunc
- func StreamRejectFollowRequestHandler(repo FollowingStorer) warpnet.WarpHandlerFunc
- func StreamReportHandler(publisher ReportPublisher) warpnet.WarpHandlerFunc
- func StreamSearchUsersHandler(userRepo UserFetcher) warpnet.WarpHandlerFunc
- func StreamSubscribeUserHandler(repo SubscriptionStorer) warpnet.WarpHandlerFunc
- func StreamTimelineHandler(repo TimelineFetcher) warpnet.WarpHandlerFunc
- func StreamUnblockHandler(repo BlocksStorer, userRepo BlockUserFetcher, nodeRepo PeerBlocklister) warpnet.WarpHandlerFunc
- func StreamUnbookmarkHandler(repo BookmarkStorer) warpnet.WarpHandlerFunc
- func StreamUnfollowHandler(broadcaster FollowingBroadcaster, followRepo FollowingStorer, ...) warpnet.WarpHandlerFunc
- func StreamUnlikeHandler(repo LikesStorer, userRepo LikedUserFetcher, streamer LikeStreamer) warpnet.WarpHandlerFunc
- func StreamUnmuteHandler(repo MutesStorer) warpnet.WarpHandlerFunc
- func StreamUnpinTweetHandler(repo TweetsStorer) warpnet.WarpHandlerFunc
- func StreamUnretweetHandler(tweetRepo ReTweetsStorer, userRepo RetweetedUserFetcher, ...) warpnet.WarpHandlerFunc
- func StreamUnsubscribeUserHandler(repo SubscriptionStorer) warpnet.WarpHandlerFunc
- func StreamUpdateFilterHandler(repo FilterStorer) warpnet.WarpHandlerFunc
- func StreamUpdateFilterKeywordHandler(repo FilterStorer) warpnet.WarpHandlerFunc
- func StreamUpdateMediaMetaHandler(repo MediaMetaStorer) warpnet.WarpHandlerFunc
- func StreamUpdateNotificationSettingsHandler(repo SettingsStorer, authRepo SettingsAuthStorer) warpnet.WarpHandlerFunc
- func StreamUpdateProfileHandler(authRepo UserAuthStorer, userRepo UserFetcher) warpnet.WarpHandlerFunc
- func StreamUploadImageHandler(info MediaNodeInformer, mediaRepo MediaStorer, userRepo MediaUserFetcher) warpnet.WarpHandlerFunc
- func StreamViewHandler(repo ViewsStorer, userRepo LikedUserFetcher, streamer LikeStreamer) warpnet.WarpHandlerFunc
- type BlockUserFetcher
- type BlocksStorer
- type BookmarkStorer
- type CRDTLikesCounter
- type CRDTRepliesCounter
- type CRDTRetweetsCounter
- type ChatAuthStorer
- type ChatStorer
- type ChatStreamer
- type ChatUserFetcher
- type DeviceStorer
- type EngagementStreamer
- type FilterStorer
- type FollowNodeStreamer
- type FollowingAuthStorer
- type FollowingBroadcaster
- type FollowingStorer
- type FollowingUserStorer
- type ImportTweetStorer
- type LikeStreamer
- type LikeTweetStorer
- type LikeTweetsStorer
- type LikedTweetsLister
- type LikedUserFetcher
- type LikersLister
- type LikesStorer
- type MediaMetaStorer
- type MediaNodeInformer
- type MediaStorer
- type MediaStreamer
- type MediaUserFetcher
- type MetricsNodeInformer
- type MetricsProvider
- type ModerationNotifier
- type ModerationTimelelineDeleter
- type ModerationTweetUpdater
- type ModerationUserUpdater
- type MutesStorer
- type NodeAddresser
- type NodeInformer
- type NotifierAllMarker
- type NotifierAuthStorer
- type NotifierFetcher
- type NotifierGetter
- type NotifierMarker
- type OwnerChatsStorer
- type OwnerReTweetStorer
- type OwnerTweetStorer
- type PairAuthStorer
- type PeerBlocklister
- type ReTweetsStorer
- type RepliesTweetCounter
- type ReportPublisher
- type RetweetStreamer
- type RetweetTimelineUpdater
- type RetweetedUserFetcher
- type RetweetersLister
- type RetweetsTweetStorer
- type SettingsAuthStorer
- type SettingsStorer
- type SubscriptionStorer
- type TimelineFetcher
- type TimelineUpdater
- type TweetBroadcaster
- type TweetFollowChecker
- type TweetStreamer
- type TweetUserFetcher
- type TweetsStorer
- type UserAuthStorer
- type UserFetcher
- type UserFollowsCounter
- type UserStreamer
- type UserTweetsCounter
- type ViewsStorer
Constants ¶
const ( ErrTooLargeImage warpnet.WarpError = "image is too large" ErrInvalidBase64Signature warpnet.WarpError = "invalid base64 image data" ErrEmptyImageKey warpnet.WarpError = "empty image key" ErrNoImagesProvided warpnet.WarpError = "at least one image must be provided" ErrInvalidEXIF warpnet.WarpError = "invalid exif type: not a segment list" )
const ( ErrNoObjectID warpnet.WarpError = "no object id found" ErrNoUserID warpnet.WarpError = "no user id found" )
const MaxReportReasonLen = 256
Variables ¶
var ( ErrReportNoTargetUser = errors.New("report: empty target_user_id") ErrReportNoTargetNode = errors.New("report: empty target_node_id") ErrReportNoReason = errors.New("report: empty reason") ErrReportReasonLong = errors.New("report: reason too long") ErrReportNoObjectID = errors.New("report: empty object_id for tweet") ErrReportBadType = errors.New("report: unsupported moderation object type") )
Functions ¶
func StreamAddFilterKeywordHandler ¶ added in v0.7.26
func StreamAddFilterKeywordHandler(repo FilterStorer) warpnet.WarpHandlerFunc
func StreamAuthorizeFollowRequestHandler ¶ added in v0.7.26
func StreamAuthorizeFollowRequestHandler(repo FollowingStorer) warpnet.WarpHandlerFunc
func StreamBlockHandler ¶ added in v0.7.26
func StreamBlockHandler(repo BlocksStorer, userRepo BlockUserFetcher, nodeRepo PeerBlocklister) warpnet.WarpHandlerFunc
func StreamBookmarkHandler ¶ added in v0.7.26
func StreamBookmarkHandler(repo BookmarkStorer) warpnet.WarpHandlerFunc
func StreamCreateChatHandler ¶
func StreamCreateChatHandler( repo ChatStorer, userRepo ChatUserFetcher, streamer ChatStreamer, ) warpnet.WarpHandlerFunc
Handler for creating a new chat
func StreamDeleteChatHandler ¶
func StreamDeleteChatHandler(repo ChatStorer, authRepo ChatAuthStorer) warpnet.WarpHandlerFunc
func StreamDeleteFilterHandler ¶ added in v0.7.26
func StreamDeleteFilterHandler(repo FilterStorer) warpnet.WarpHandlerFunc
func StreamDeleteFilterKeywordHandler ¶ added in v0.7.26
func StreamDeleteFilterKeywordHandler(repo FilterStorer) warpnet.WarpHandlerFunc
func StreamDeleteMessageHandler ¶
func StreamDeleteMessageHandler(repo ChatStorer, authRepo OwnerChatsStorer) warpnet.WarpHandlerFunc
Handler for deleting a message
func StreamDeleteTweetHandler ¶
func StreamDeleteTweetHandler( broadcaster TweetBroadcaster, authRepo OwnerTweetStorer, repo TweetsStorer, timelineRepo TimelineUpdater, likeRepo LikeTweetStorer, userRepo TweetUserFetcher, streamer TweetStreamer, ) warpnet.WarpHandlerFunc
func StreamEditTweetHandler ¶ added in v0.7.26
func StreamEditTweetHandler(repo TweetsStorer, timelineRepo TimelineUpdater) warpnet.WarpHandlerFunc
func StreamFollowHandler ¶
func StreamFollowHandler( broadcaster FollowingBroadcaster, followRepo FollowingStorer, authRepo FollowingAuthStorer, userRepo FollowingUserStorer, notifyRepo ModerationNotifier, streamer FollowNodeStreamer, ) warpnet.WarpHandlerFunc
func StreamGetBlocksHandler ¶ added in v0.7.26
func StreamGetBlocksHandler(repo BlocksStorer) warpnet.WarpHandlerFunc
func StreamGetBookmarksHandler ¶ added in v0.7.26
func StreamGetBookmarksHandler(repo BookmarkStorer) warpnet.WarpHandlerFunc
func StreamGetFilterHandler ¶ added in v0.7.26
func StreamGetFilterHandler(repo FilterStorer) warpnet.WarpHandlerFunc
func StreamGetFiltersHandler ¶ added in v0.7.26
func StreamGetFiltersHandler(repo FilterStorer) warpnet.WarpHandlerFunc
func StreamGetFollowRequestsHandler ¶ added in v0.7.26
func StreamGetFollowRequestsHandler(repo FollowingStorer) warpnet.WarpHandlerFunc
func StreamGetFollowersHandler ¶
func StreamGetFollowersHandler( authRepo FollowingAuthStorer, userRepo FollowingUserStorer, followRepo FollowingStorer, streamer FollowNodeStreamer, ) warpnet.WarpHandlerFunc
func StreamGetFollowingsHandler ¶ added in v0.5.83
func StreamGetFollowingsHandler( authRepo FollowingAuthStorer, userRepo FollowingUserStorer, followRepo FollowingStorer, streamer FollowNodeStreamer, ) warpnet.WarpHandlerFunc
func StreamGetImageHandler ¶
func StreamGetImageHandler( streamer MediaStreamer, mediaRepo MediaStorer, userRepo MediaUserFetcher, ) warpnet.WarpHandlerFunc
func StreamGetInfoHandler ¶
func StreamGetInfoHandler( i NodeInformer, discHandler discovery.DiscoveryHandler, ) warpnet.WarpHandlerFunc
func StreamGetLikesHandler ¶ added in v0.7.403
func StreamGetLikesHandler(repo LikedTweetsLister) warpnet.WarpHandlerFunc
StreamGetLikesHandler returns one page of the local user's "tweets I liked" index, newest first. Same reference-only wire shape as bookmarks: clients hydrate each tweet via PUBLIC_GET_TWEET using OwnerUserId.
func StreamGetMediaHandler ¶ added in v0.7.26
func StreamGetMediaHandler(repo MediaMetaStorer) warpnet.WarpHandlerFunc
func StreamGetMessageHandler ¶
func StreamGetMessageHandler(repo ChatStorer, authRepo OwnerChatsStorer) warpnet.WarpHandlerFunc
StreamGetMessageHandler for retrieving a specific message
func StreamGetMessagesHandler ¶
func StreamGetMessagesHandler(repo ChatStorer, authRepo OwnerChatsStorer) warpnet.WarpHandlerFunc
Handler for getting messages in a chat
func StreamGetMutesHandler ¶ added in v0.7.26
func StreamGetMutesHandler(repo MutesStorer) warpnet.WarpHandlerFunc
func StreamGetNotificationHandler ¶ added in v0.7.26
func StreamGetNotificationHandler( repo NotifierGetter, authRepo NotifierAuthStorer, ) warpnet.WarpHandlerFunc
func StreamGetNotificationSettingsHandler ¶ added in v0.7.483
func StreamGetNotificationSettingsHandler( repo SettingsStorer, authRepo SettingsAuthStorer, ) warpnet.WarpHandlerFunc
func StreamGetNotificationsHandler ¶ added in v0.5.30
func StreamGetNotificationsHandler( repo NotifierFetcher, authRepo NotifierAuthStorer, ) warpnet.WarpHandlerFunc
func StreamGetPushesHandler ¶ added in v0.7.362
func StreamGetPushesHandler( repo NotifierFetcher, authRepo NotifierAuthStorer, ) warpnet.WarpHandlerFunc
StreamGetPushesHandler returns notifications newer than the given cursor (delta pull) via ReverseList, keeping the response cursor as a high-water mark. The plain notifications route stays on List so the desktop UI's older-page pagination (cursor -> end) is unaffected.
func StreamGetStatsHandler ¶
func StreamGetStatsHandler( i MetricsNodeInformer, db MetricsProvider, ) warpnet.WarpHandlerFunc
func StreamGetTweetHandler ¶
func StreamGetTweetHandler( repo TweetsStorer, authRepo OwnerTweetStorer, userRepo TweetUserFetcher, streamer TweetStreamer, ) warpnet.WarpHandlerFunc
func StreamGetTweetLikersHandler ¶ added in v0.7.26
func StreamGetTweetLikersHandler( repo LikersLister, userRepo LikedUserFetcher, streamer EngagementStreamer, ) warpnet.WarpHandlerFunc
func StreamGetTweetRetweetersHandler ¶ added in v0.7.26
func StreamGetTweetRetweetersHandler( repo RetweetersLister, userRepo LikedUserFetcher, streamer EngagementStreamer, ) warpnet.WarpHandlerFunc
func StreamGetTweetStatsHandler ¶
func StreamGetTweetStatsHandler( tweetRepo TweetsStorer, likeRepo LikeTweetStorer, retweetRepo RetweetsTweetStorer, replyRepo RepliesTweetCounter, userRepo TweetUserFetcher, streamer TweetStreamer, ) warpnet.WarpHandlerFunc
func StreamGetTweetsHandler ¶
func StreamGetTweetsHandler( repo TweetsStorer, userRepo TweetUserFetcher, streamer TweetStreamer, ) warpnet.WarpHandlerFunc
func StreamGetUserChatHandler ¶
func StreamGetUserChatHandler(repo ChatStorer, authRepo ChatAuthStorer) warpnet.WarpHandlerFunc
func StreamGetUserChatsHandler ¶
func StreamGetUserChatsHandler(repo ChatStorer, authRepo OwnerChatsStorer) warpnet.WarpHandlerFunc
func StreamGetUserHandler ¶
func StreamGetUserHandler( tweetRepo UserTweetsCounter, followRepo UserFollowsCounter, repo UserFetcher, authRepo UserAuthStorer, streamer UserStreamer, ) warpnet.WarpHandlerFunc
func StreamGetUsersHandler ¶
func StreamGetUsersHandler( userRepo UserFetcher, streamer UserStreamer, ) warpnet.WarpHandlerFunc
func StreamGetWhoToFollowHandler ¶ added in v0.3.75
func StreamGetWhoToFollowHandler( authRepo UserAuthStorer, userRepo UserFetcher, followRepo UserFollowsCounter, ) warpnet.WarpHandlerFunc
func StreamImportTweetHandler ¶ added in v0.7.206
func StreamImportTweetHandler( info MediaNodeInformer, tweetRepo ImportTweetStorer, mediaRepo MediaStorer, userRepo MediaUserFetcher, ) warpnet.WarpHandlerFunc
StreamImportTweetHandler stores one pre-parsed original tweet streamed from the client (business browser dashboard or desktop member node). The client unzips and filters the X archive itself — dropping retweets, replies, GIFs and videos — and streams only the kept tweets one by one, so the node never buffers the whole archive. Photos arrive as raw base64 and go through the same EXIF/ownership pipeline as a fresh upload.
func StreamIsFollowerHandler ¶ added in v0.5.83
func StreamIsFollowerHandler( followRepo FollowingStorer, authRepo FollowingAuthStorer, ) warpnet.WarpHandlerFunc
func StreamIsFollowingHandler ¶ added in v0.5.83
func StreamIsFollowingHandler( followRepo FollowingStorer, authRepo FollowingAuthStorer, ) warpnet.WarpHandlerFunc
func StreamLikeHandler ¶
func StreamLikeHandler( repo LikesStorer, userRepo LikedUserFetcher, notifyRepo ModerationNotifier, streamer LikeStreamer, ) warpnet.WarpHandlerFunc
func StreamMarkAllNotificationsReadHandler ¶ added in v0.7.422
func StreamMarkAllNotificationsReadHandler( repo NotifierAllMarker, authRepo NotifierAuthStorer, ) warpnet.WarpHandlerFunc
StreamMarkAllNotificationsReadHandler flips every unread notification for the owner in one round-trip. The UI's "Mark all as read" (and the open-the-notifications-view auto-read) used to page through PRIVATE_GET_NOTIFICATIONS and post per-id reads, which only ever covered the first page — unread items beyond it kept the badge alive forever.
func StreamMarkNotificationReadHandler ¶ added in v0.7.26
func StreamMarkNotificationReadHandler( repo NotifierMarker, authRepo NotifierAuthStorer, ) warpnet.WarpHandlerFunc
func StreamModerationResultHandler ¶ added in v0.3.129
func StreamModerationResultHandler( notifier ModerationNotifier, tweetRepo ModerationTweetUpdater, userRepo ModerationUserUpdater, timelineRepo ModerationTimelelineDeleter, authRepo NotifierAuthStorer, ) warpnet.WarpHandlerFunc
StreamModerationResultHandler receives a verdict from a moderator and applies it locally so this node's view of the offending object is downgraded. Two design notes:
Isolation is shadow-style: the offender's own node never receives this stream (the moderator only publishes the verdict to the followers/observers pubsub topic, see IsolationProtocol). The previous "notify the owner" branch was deleted because that defeats the whole point — the offender would see a moderation notification.
ModerationUserType marks the user-level moderation flag so clients hide bio/displayName/url/website on the next render. The user row stays on disk, only the Moderation sidecar is set.
func StreamMuteHandler ¶ added in v0.7.26
func StreamMuteHandler(repo MutesStorer) warpnet.WarpHandlerFunc
func StreamNewFilterHandler ¶ added in v0.7.26
func StreamNewFilterHandler(repo FilterStorer) warpnet.WarpHandlerFunc
func StreamNewMessageHandler ¶ added in v0.5.87
func StreamNewMessageHandler(repo ChatStorer, userRepo ChatUserFetcher, notifyRepo ModerationNotifier, streamer ChatStreamer) warpnet.WarpHandlerFunc
StreamNewMessageHandler is for sending a new message
func StreamNewReTweetHandler ¶
func StreamNewReTweetHandler( userRepo RetweetedUserFetcher, tweetRepo ReTweetsStorer, timelineRepo RetweetTimelineUpdater, notifyRepo ModerationNotifier, streamer RetweetStreamer, ) warpnet.WarpHandlerFunc
func StreamNewTweetHandler ¶
func StreamNewTweetHandler( broadcaster TweetBroadcaster, authRepo OwnerTweetStorer, tweetRepo TweetsStorer, timelineRepo TimelineUpdater, followRepo TweetFollowChecker, userRepo TweetUserFetcher, notifyRepo ModerationNotifier, streamer TweetStreamer, ) warpnet.WarpHandlerFunc
func StreamNodesPairingHandler ¶
func StreamNodesPairingHandler(authRepo PairAuthStorer, deviceRepo DeviceStorer, n NodeAddresser) warpnet.WarpHandlerFunc
func StreamPinTweetHandler ¶ added in v0.7.26
func StreamPinTweetHandler(repo TweetsStorer) warpnet.WarpHandlerFunc
func StreamRejectFollowRequestHandler ¶ added in v0.7.26
func StreamRejectFollowRequestHandler(repo FollowingStorer) warpnet.WarpHandlerFunc
func StreamReportHandler ¶ added in v0.7.59
func StreamReportHandler(publisher ReportPublisher) warpnet.WarpHandlerFunc
func StreamSearchUsersHandler ¶ added in v0.7.26
func StreamSearchUsersHandler(userRepo UserFetcher) warpnet.WarpHandlerFunc
func StreamSubscribeUserHandler ¶ added in v0.7.26
func StreamSubscribeUserHandler(repo SubscriptionStorer) warpnet.WarpHandlerFunc
func StreamTimelineHandler ¶
func StreamTimelineHandler(repo TimelineFetcher) warpnet.WarpHandlerFunc
func StreamUnblockHandler ¶ added in v0.7.26
func StreamUnblockHandler(repo BlocksStorer, userRepo BlockUserFetcher, nodeRepo PeerBlocklister) warpnet.WarpHandlerFunc
func StreamUnbookmarkHandler ¶ added in v0.7.26
func StreamUnbookmarkHandler(repo BookmarkStorer) warpnet.WarpHandlerFunc
func StreamUnfollowHandler ¶
func StreamUnfollowHandler( broadcaster FollowingBroadcaster, followRepo FollowingStorer, authRepo FollowingAuthStorer, userRepo FollowingUserStorer, streamer FollowNodeStreamer, ) warpnet.WarpHandlerFunc
func StreamUnlikeHandler ¶
func StreamUnlikeHandler(repo LikesStorer, userRepo LikedUserFetcher, streamer LikeStreamer) warpnet.WarpHandlerFunc
func StreamUnmuteHandler ¶ added in v0.7.26
func StreamUnmuteHandler(repo MutesStorer) warpnet.WarpHandlerFunc
func StreamUnpinTweetHandler ¶ added in v0.7.26
func StreamUnpinTweetHandler(repo TweetsStorer) warpnet.WarpHandlerFunc
func StreamUnretweetHandler ¶
func StreamUnretweetHandler( tweetRepo ReTweetsStorer, userRepo RetweetedUserFetcher, streamer RetweetStreamer, ) warpnet.WarpHandlerFunc
func StreamUnsubscribeUserHandler ¶ added in v0.7.26
func StreamUnsubscribeUserHandler(repo SubscriptionStorer) warpnet.WarpHandlerFunc
func StreamUpdateFilterHandler ¶ added in v0.7.26
func StreamUpdateFilterHandler(repo FilterStorer) warpnet.WarpHandlerFunc
func StreamUpdateFilterKeywordHandler ¶ added in v0.7.26
func StreamUpdateFilterKeywordHandler(repo FilterStorer) warpnet.WarpHandlerFunc
func StreamUpdateMediaMetaHandler ¶ added in v0.7.26
func StreamUpdateMediaMetaHandler(repo MediaMetaStorer) warpnet.WarpHandlerFunc
func StreamUpdateNotificationSettingsHandler ¶ added in v0.7.483
func StreamUpdateNotificationSettingsHandler( repo SettingsStorer, authRepo SettingsAuthStorer, ) warpnet.WarpHandlerFunc
func StreamUpdateProfileHandler ¶
func StreamUpdateProfileHandler(authRepo UserAuthStorer, userRepo UserFetcher) warpnet.WarpHandlerFunc
func StreamUploadImageHandler ¶
func StreamUploadImageHandler( info MediaNodeInformer, mediaRepo MediaStorer, userRepo MediaUserFetcher, ) warpnet.WarpHandlerFunc
func StreamViewHandler ¶ added in v0.6.316
func StreamViewHandler(repo ViewsStorer, userRepo LikedUserFetcher, streamer LikeStreamer) warpnet.WarpHandlerFunc
Types ¶
type BlockUserFetcher ¶ added in v0.7.26
BlockUserFetcher looks up the blockee so the handler can escalate the social block into a network-layer peer blocklist.
type BlocksStorer ¶ added in v0.7.26
type BlocksStorer interface {
Block(blockerId, blockeeId string) error
Unblock(blockerId, blockeeId string) error
List(blockerId string, limit *uint64, cursor *string) ([]string, string, error)
}
BlocksStorer is the narrow surface block handlers need from BlocksRepo.
type BookmarkStorer ¶ added in v0.7.26
type CRDTLikesCounter ¶ added in v0.5.158
CRDTLikesCounter provides CRDT-based likes counting
type CRDTRepliesCounter ¶ added in v0.5.158
CRDTRepliesCounter provides CRDT-based replies counting
type CRDTRetweetsCounter ¶ added in v0.5.158
CRDTRetweetsCounter provides CRDT-based retweets counting
type ChatAuthStorer ¶
type ChatStorer ¶
type ChatStorer interface {
CreateChat(chatId *string, ownerId, otherUserId string) (domain.Chat, error)
DeleteChat(chatId string) error
GetUserChats(userId string, limit *uint64, cursor *string) ([]domain.Chat, string, error)
CreateMessage(msg domain.ChatMessage) (domain.ChatMessage, error)
ListMessages(chatId string, limit *uint64, cursor *string) ([]domain.ChatMessage, string, error)
GetMessage(chatId, id string) (domain.ChatMessage, error)
DeleteMessage(chatId, id string) error
GetChat(chatId string) (chat domain.Chat, err error)
}
type ChatStreamer ¶
type ChatUserFetcher ¶
type DeviceStorer ¶ added in v0.6.263
type EngagementStreamer ¶ added in v0.7.26
type EngagementStreamer interface {
GenericStream(nodeId string, path stream.WarpRoute, data any) (_ []byte, err error)
NodeInfo() warpnet.NodeInfo
}
EngagementStreamer forwards the lookup to the tweet author's node when the canonical engagement record lives elsewhere — mirrors the like.go propagation pattern.
type FilterStorer ¶ added in v0.7.26
type FilterStorer interface {
Create(userId string, f domain.Filter) (domain.Filter, error)
Get(userId, filterId string) (domain.Filter, error)
Update(userId string, f domain.Filter) (domain.Filter, error)
Delete(userId, filterId string) error
List(userId string, limit *uint64, cursor *string) ([]domain.Filter, string, error)
AddKeyword(userId, filterId string, kw domain.FilterKeyword) (domain.FilterKeyword, error)
UpdateKeyword(userId string, kw domain.FilterKeyword) (domain.FilterKeyword, error)
DeleteKeyword(userId, keywordId string) error
}
FilterStorer is the narrow surface filter handlers need.
type FollowNodeStreamer ¶
type FollowingAuthStorer ¶
type FollowingBroadcaster ¶
type FollowingStorer ¶
type FollowingStorer interface {
Follow(fromUserId, toUserId string) error
Unfollow(fromUserId, toUserId string) error
GetFollowers(userId string, limit *uint64, cursor *string) ([]string, string, error)
GetFollowings(userId string, limit *uint64, cursor *string) ([]string, string, error)
IsFollowing(ownerId, otherUserId string) bool
IsFollower(ownerId, otherUserId string) bool
AddFollowRequest(targetUserId, followerId string) error
RemoveFollowRequest(targetUserId, followerId string) error
ListFollowRequests(targetUserId string, limit *uint64, cursor *string) ([]string, string, error)
}
type FollowingUserStorer ¶
type ImportTweetStorer ¶ added in v0.7.194
type LikeStreamer ¶
type LikeTweetStorer ¶
type LikeTweetStorer interface {
Like(tweetId, userId string) (likesNum uint64, err error)
Unlike(tweetId, userId string) (likesNum uint64, err error)
LikesCount(tweetId string) (likesNum uint64, err error)
Likers(tweetId string, limit *uint64, cursor *string) (likers []string, cur string, err error)
}
type LikeTweetsStorer ¶
type LikedTweetsLister ¶ added in v0.7.403
type LikedUserFetcher ¶
type LikersLister ¶ added in v0.7.26
type LikersLister interface {
Likers(tweetId string, limit *uint64, cursor *string) ([]string, string, error)
}
LikersLister is the narrow surface the likers handler needs.
type LikesStorer ¶
type LikesStorer interface {
Like(tweetId, userId string) (likesNum uint64, err error)
Unlike(tweetId, userId string) (likesNum uint64, err error)
LikesCount(tweetId string) (likesNum uint64, err error)
Likers(tweetId string, limit *uint64, cursor *string) (likers []string, cur string, err error)
SetLiked(userId, tweetId, ownerUserId string) error
RemoveLiked(userId, tweetId string) error
}
type MediaMetaStorer ¶ added in v0.7.26
type MediaMetaStorer interface {
SetImageMeta(userId, key string, meta database.MediaMeta) error
GetImageMeta(userId, key string) (database.MediaMeta, error)
}
MediaMetaStorer is the slice of MediaRepo the alt-text / focal-point handlers need.
type MediaNodeInformer ¶
type MediaStorer ¶
type MediaStorer interface {
GetImage(userId, key string) (database.Base64Image, error)
SetImage(userId string, img database.Base64Image) (_ database.ImageKey, err error)
SetForeignImageWithTTL(userId, key string, img database.Base64Image) error
}
type MediaStreamer ¶
type MediaUserFetcher ¶
type MetricsNodeInformer ¶ added in v0.7.392
type MetricsNodeInformer interface {
NodeInfo() warpnet.NodeInfo
Peerstore() warpnet.WarpPeerstore
Network() warpnet.WarpNetwork
}
type MetricsProvider ¶ added in v0.7.392
type ModerationNotifier ¶ added in v0.5.30
type ModerationNotifier interface {
Add(not domain.Notification) error
}
type ModerationTimelelineDeleter ¶ added in v0.5.136
type ModerationTweetUpdater ¶ added in v0.5.134
type ModerationUserUpdater ¶ added in v0.7.59
type MutesStorer ¶ added in v0.7.26
type MutesStorer interface {
Mute(muterId, muteeId string) error
Unmute(muterId, muteeId string) error
List(muterId string, limit *uint64, cursor *string) ([]string, string, error)
}
MutesStorer is the narrow surface mute handlers need from MutesRepo.
type NodeAddresser ¶ added in v0.7.26
type NodeAddresser interface {
PublicAddrs() []warpnet.WarpAddress
}
type NodeInformer ¶
type NotifierAllMarker ¶ added in v0.7.422
type NotifierAuthStorer ¶ added in v0.5.87
type NotifierFetcher ¶ added in v0.5.30
type NotifierGetter ¶ added in v0.7.26
type NotifierGetter interface {
Get(userId, notificationId string) (domain.Notification, error)
}
type NotifierMarker ¶ added in v0.7.26
type OwnerChatsStorer ¶
type OwnerReTweetStorer ¶
type OwnerTweetStorer ¶
type PairAuthStorer ¶ added in v0.7.320
type PairAuthStorer interface {
SessionToken() string
}
type PeerBlocklister ¶ added in v0.7.26
type PeerBlocklister interface {
BlocklistPermanent(peerId string) error
BlocklistRemove(peerId string) error
}
PeerBlocklister talks to NodeRepo's libp2p-level blocklist (database/node-repo.go) so blocking a user disconnects and refuses traffic from their node.
A social block is permanent until the user undoes it, so we go straight to BlocklistPermanent (no exponential escalation) on Block, and BlocklistRemove on Unblock.
type ReTweetsStorer ¶
type ReTweetsStorer interface {
Get(userID, tweetID string) (tweet domain.Tweet, err error)
NewRetweet(tweet domain.Tweet) (_ domain.Tweet, err error)
UnRetweet(retweetedByUserID, tweetId string) error
RetweetsCount(tweetId string) (uint64, error)
Retweeters(tweetId string, limit *uint64, cursor *string) (_ []string, cur string, err error)
}
type RepliesTweetCounter ¶
type ReportPublisher ¶ added in v0.7.59
type ReportPublisher interface {
PublishReport(ev event.ReportEvent) error
}
type RetweetStreamer ¶
type RetweetTimelineUpdater ¶
type RetweetedUserFetcher ¶
type RetweetersLister ¶ added in v0.7.26
type RetweetersLister interface {
Retweeters(tweetId string, limit *uint64, cursor *string) ([]string, string, error)
}
RetweetersLister is the narrow surface the retweeters handler needs.
type RetweetsTweetStorer ¶
type RetweetsTweetStorer interface {
Get(userID, tweetID string) (tweet domain.Tweet, err error)
NewRetweet(tweet domain.Tweet) (_ domain.Tweet, err error)
UnRetweet(retweetedByUserID, tweetId string) error
RetweetsCount(tweetId string) (uint64, error)
Retweeters(tweetId string, limit *uint64, cursor *string) (_ []string, cur string, err error)
}
type SettingsAuthStorer ¶ added in v0.7.483
SettingsAuthStorer resolves the local node owner.
type SettingsStorer ¶ added in v0.7.483
type SettingsStorer interface {
GetNotificationSettings(userId string) (domain.NotificationSettings, error)
SetNotificationSettings(userId string, s domain.NotificationSettings) error
}
SettingsStorer is the narrow surface the notification-settings handlers need.
type SubscriptionStorer ¶ added in v0.7.26
type SubscriptionStorer interface {
Subscribe(selfId, targetUserId string) error
Unsubscribe(selfId, targetUserId string) error
}
SubscriptionStorer is the slice of SubscriptionsRepo the subscribe handlers need. Subscribe = "tell me about new tweets from this user"; the local node uses this watchlist to elevate the corresponding incoming tweet to a notification.
type TimelineFetcher ¶
type TimelineUpdater ¶
type TweetBroadcaster ¶
type TweetFollowChecker ¶ added in v0.7.145
TweetFollowChecker reports whether ownerId follows authorId. The new-tweet handler uses it to keep unsolicited tweets out of the local timeline: a tweet is only accepted when the owner authored it or follows its author.
type TweetStreamer ¶
type TweetUserFetcher ¶
type TweetsStorer ¶
type TweetsStorer interface {
TweetsCount(userId string) (uint64, error)
GetViewsCount(tweetId string) (uint64, error)
IsBlocklisted(tweetId string) bool
Blocklist(tweetId string) error
Get(userID, tweetID string) (tweet domain.Tweet, err error)
List(string, *uint64, *string) ([]domain.Tweet, string, error)
Create(_ string, tweet domain.Tweet) (domain.Tweet, error)
Delete(userID, tweetID string) error
UnRetweet(retweetedByUserID, tweetId string) error
Retweeters(tweetId string, limit *uint64, cursor *string) (_ []string, cur string, err error)
CreateWithTTL(userId string, tweet domain.Tweet, duration time.Duration) (domain.Tweet, error)
Update(tweet domain.Tweet) error
Pin(userId, tweetId string) (domain.Tweet, error)
Unpin(userId, tweetId string) (domain.Tweet, error)
AppendEdit(edit domain.TweetEdit) (domain.TweetEdit, error)
AddReply(reply domain.Tweet) (domain.Tweet, error)
GetReply(parentID, replyID string) (domain.Tweet, error)
DeleteReply(parentID, replyID string) (domain.Tweet, error)
GetReplies(parentID string, limit *uint64, cursor *string) ([]domain.Tweet, string, error)
}
type UserAuthStorer ¶
type UserFetcher ¶
type UserFetcher interface {
Create(user domain.User) (domain.User, error)
Get(userId string) (user domain.User, err error)
List(limit *uint64, cursor *string) ([]domain.User, string, error)
Search(query string, limit *uint64, cursor *string) ([]domain.User, string, error)
WhoToFollow(limit *uint64, cursor *string) ([]domain.User, string, error)
Update(userId string, newUser domain.User) (updatedUser domain.User, err error)
CreateWithTTL(user domain.User, ttl time.Duration) (domain.User, error)
}
type UserFollowsCounter ¶
type UserFollowsCounter interface {
GetFollowersCount(userId string) (uint64, error)
GetFollowingsCount(userId string) (uint64, error)
GetFollowers(userId string, limit *uint64, cursor *string) ([]string, string, error)
GetFollowings(userId string, limit *uint64, cursor *string) ([]string, string, error)
}