connector

package
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 16, 2024 License: AGPL-3.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const ChatInfoCacheExpiry = 1 * time.Hour
View Source
const ExtractSlackTokenJS = `` /* 808-byte string literal not displayed */
View Source
const LoginFlowIDApp = "app"
View Source
const LoginFlowIDAuthToken = "token"
View Source
const LoginStepIDAppToken = "fi.mau.slack.login.enter_app_tokens"
View Source
const LoginStepIDAuthToken = "fi.mau.slack.login.enter_auth_token"
View Source
const LoginStepIDComplete = "fi.mau.slack.login.complete"
View Source
const MinGhostSyncInterval = 4 * time.Hour

Variables

View Source
var ExampleConfig string

Functions

This section is empty.

Types

type BackfillConfig

type BackfillConfig struct {
	ConversationCount int  `yaml:"conversation_count"`
	Enabled           bool `yaml:"enabled"`
}

type ChannelNameParams

type ChannelNameParams struct {
	*slack.Channel
	Team         *slack.TeamInfo
	IsNoteToSelf bool
}

type Config

type Config struct {
	DisplaynameTemplate string `yaml:"displayname_template"`
	ChannelNameTemplate string `yaml:"channel_name_template"`
	TeamNameTemplate    string `yaml:"team_name_template"`

	CustomEmojiReactions        bool `yaml:"custom_emoji_reactions"`
	WorkspaceAvatarInRooms      bool `yaml:"workspace_avatar_in_rooms"`
	ParticipantSyncCount        int  `yaml:"participant_sync_count"`
	ParticipantSyncOnlyOnCreate bool `yaml:"participant_sync_only_on_create"`
	MuteChannelsByDefault       bool `yaml:"mute_channels_by_default"`

	Backfill BackfillConfig `yaml:"backfill"`
	// contains filtered or unexported fields
}

func (*Config) FormatBotDisplayname

func (c *Config) FormatBotDisplayname(bot *slack.Bot, team *slack.TeamInfo) string

func (*Config) FormatChannelName

func (c *Config) FormatChannelName(params *ChannelNameParams) string

func (*Config) FormatDisplayname

func (c *Config) FormatDisplayname(user *DisplaynameParams) string

func (*Config) FormatTeamName

func (c *Config) FormatTeamName(params *slack.TeamInfo) string

func (*Config) UnmarshalYAML

func (c *Config) UnmarshalYAML(node *yaml.Node) error

type DisplaynameParams

type DisplaynameParams struct {
	*slack.User
	Team *slack.TeamInfo
}

type SlackAppLogin

type SlackAppLogin struct {
	User *bridgev2.User
}

func (*SlackAppLogin) Cancel

func (s *SlackAppLogin) Cancel()

func (*SlackAppLogin) Start

func (*SlackAppLogin) SubmitUserInput

func (s *SlackAppLogin) SubmitUserInput(ctx context.Context, input map[string]string) (*bridgev2.LoginStep, error)

type SlackChatInfoChange

type SlackChatInfoChange struct {
	*SlackEventMeta
	Change *bridgev2.ChatInfoChange
}

func (*SlackChatInfoChange) GetChatInfoChange

func (s *SlackChatInfoChange) GetChatInfoChange(ctx context.Context) (*bridgev2.ChatInfoChange, error)

type SlackChatResync

type SlackChatResync struct {
	*SlackEventMeta
	Client         *SlackClient
	LatestMessage  string
	PreFetchedInfo *slack.Channel
	ShouldSyncInfo bool
}

func (*SlackChatResync) CheckNeedsBackfill

func (s *SlackChatResync) CheckNeedsBackfill(ctx context.Context, latestBridgedMessage *database.Message) (bool, error)

func (*SlackChatResync) GetChatInfo

func (s *SlackChatResync) GetChatInfo(ctx context.Context, portal *bridgev2.Portal) (*bridgev2.ChatInfo, error)

type SlackClient

type SlackClient struct {
	Main       *SlackConnector
	UserLogin  *bridgev2.UserLogin
	Client     *slack.Client
	RTM        *slack.RTM
	SocketMode *socketmode.Client
	UserID     string
	TeamID     string
	BootResp   *slack.ClientUserBootResponse
	TeamPortal *bridgev2.Portal
	IsRealUser bool
	Ghost      *bridgev2.Ghost
	// contains filtered or unexported fields
}

func (*SlackClient) Connect

func (s *SlackClient) Connect(ctx context.Context)

func (*SlackClient) CreateGroup

func (s *SlackClient) CreateGroup(ctx context.Context, name string, users ...networkid.UserID) (*bridgev2.CreateChatResponse, error)

func (*SlackClient) Disconnect

func (s *SlackClient) Disconnect()

func (*SlackClient) FetchMessages

func (*SlackClient) FillBridgeState

func (s *SlackClient) FillBridgeState(state status.BridgeState) status.BridgeState

func (*SlackClient) GetBackfillMaxBatchCount

func (s *SlackClient) GetBackfillMaxBatchCount(ctx context.Context, portal *bridgev2.Portal, task *database.BackfillTask) int

func (*SlackClient) GetCapabilities

func (s *SlackClient) GetCapabilities(ctx context.Context, portal *bridgev2.Portal) *bridgev2.NetworkRoomCapabilities

func (*SlackClient) GetChatInfo

func (s *SlackClient) GetChatInfo(ctx context.Context, portal *bridgev2.Portal) (*bridgev2.ChatInfo, error)

func (*SlackClient) GetClient

func (s *SlackClient) GetClient() *slack.Client

func (*SlackClient) GetEmoji

func (s *SlackClient) GetEmoji(ctx context.Context, shortcode string) (string, bool)

func (*SlackClient) GetUserInfo

func (s *SlackClient) GetUserInfo(ctx context.Context, ghost *bridgev2.Ghost) (*bridgev2.UserInfo, error)

func (*SlackClient) HandleMatrixEdit

func (s *SlackClient) HandleMatrixEdit(ctx context.Context, msg *bridgev2.MatrixEdit) error

func (*SlackClient) HandleMatrixMessage

func (s *SlackClient) HandleMatrixMessage(ctx context.Context, msg *bridgev2.MatrixMessage) (*bridgev2.MatrixMessageResponse, error)

func (*SlackClient) HandleMatrixMessageRemove

func (s *SlackClient) HandleMatrixMessageRemove(ctx context.Context, msg *bridgev2.MatrixMessageRemove) error

func (*SlackClient) HandleMatrixReaction

func (s *SlackClient) HandleMatrixReaction(ctx context.Context, msg *bridgev2.MatrixReaction) (reaction *database.Reaction, err error)

func (*SlackClient) HandleMatrixReactionRemove

func (s *SlackClient) HandleMatrixReactionRemove(ctx context.Context, msg *bridgev2.MatrixReactionRemove) error

func (*SlackClient) HandleMatrixReadReceipt

func (s *SlackClient) HandleMatrixReadReceipt(ctx context.Context, msg *bridgev2.MatrixReadReceipt) error

func (*SlackClient) HandleMatrixRoomName

func (s *SlackClient) HandleMatrixRoomName(ctx context.Context, msg *bridgev2.MatrixRoomName) (bool, error)

func (*SlackClient) HandleMatrixRoomTopic

func (s *SlackClient) HandleMatrixRoomTopic(ctx context.Context, msg *bridgev2.MatrixRoomTopic) (bool, error)

func (*SlackClient) HandleMatrixTyping

func (s *SlackClient) HandleMatrixTyping(ctx context.Context, msg *bridgev2.MatrixTyping) error

func (*SlackClient) HandleSlackEvent

func (s *SlackClient) HandleSlackEvent(rawEvt any)

func (*SlackClient) HandleSocketModeEvent

func (s *SlackClient) HandleSocketModeEvent(evt socketmode.Event)

func (*SlackClient) IsLoggedIn

func (s *SlackClient) IsLoggedIn() bool

func (*SlackClient) IsThisUser

func (s *SlackClient) IsThisUser(ctx context.Context, userID networkid.UserID) bool

func (*SlackClient) LogoutRemote

func (s *SlackClient) LogoutRemote(ctx context.Context)

func (*SlackClient) PreHandleMatrixReaction

func (s *SlackClient) PreHandleMatrixReaction(ctx context.Context, msg *bridgev2.MatrixReaction) (resp bridgev2.MatrixReactionPreResponse, err error)

func (*SlackClient) ResolveIdentifier

func (s *SlackClient) ResolveIdentifier(ctx context.Context, identifier string, createChat bool) (*bridgev2.ResolveIdentifierResponse, error)

func (*SlackClient) ResyncEmojisDueToNotFound

func (s *SlackClient) ResyncEmojisDueToNotFound(ctx context.Context) bool

func (*SlackClient) SearchUsers

func (s *SlackClient) SearchUsers(ctx context.Context, query string) ([]*bridgev2.ResolveIdentifierResponse, error)

func (*SlackClient) SyncChannels

func (s *SlackClient) SyncChannels(ctx context.Context)

func (*SlackClient) SyncEmojis

func (s *SlackClient) SyncEmojis(ctx context.Context)

type SlackConnector

type SlackConnector struct {
	Config  Config
	DB      *slackdb.SlackDB
	MsgConv *msgconv.MessageConverter
	// contains filtered or unexported fields
}

func (*SlackConnector) CreateLogin

func (s *SlackConnector) CreateLogin(ctx context.Context, user *bridgev2.User, flowID string) (bridgev2.LoginProcess, error)

func (*SlackConnector) GetCapabilities

func (s *SlackConnector) GetCapabilities() *bridgev2.NetworkGeneralCapabilities

func (*SlackConnector) GetConfig

func (s *SlackConnector) GetConfig() (example string, data any, upgrader up.Upgrader)

func (*SlackConnector) GetDBMetaTypes

func (s *SlackConnector) GetDBMetaTypes() database.MetaTypes

func (*SlackConnector) GetLoginFlows

func (s *SlackConnector) GetLoginFlows() []bridgev2.LoginFlow

func (*SlackConnector) GetName

func (s *SlackConnector) GetName() bridgev2.BridgeName

func (*SlackConnector) Init

func (s *SlackConnector) Init(bridge *bridgev2.Bridge)

func (*SlackConnector) LoadUserLogin

func (s *SlackConnector) LoadUserLogin(ctx context.Context, login *bridgev2.UserLogin) error

func (*SlackConnector) SetMaxFileSize

func (s *SlackConnector) SetMaxFileSize(maxSize int64)

func (*SlackConnector) Start

func (s *SlackConnector) Start(ctx context.Context) error

func (*SlackConnector) ValidateUserID

func (s *SlackConnector) ValidateUserID(id networkid.UserID) bool

type SlackEventMeta

type SlackEventMeta struct {
	Type         bridgev2.RemoteEventType
	PortalKey    networkid.PortalKey
	Sender       bridgev2.EventSender
	Timestamp    time.Time
	ID           networkid.MessageID
	LogContext   func(zerolog.Context) zerolog.Context
	CreatePortal bool
	RawTimestamp string
}

func (*SlackEventMeta) AddLogContext

func (s *SlackEventMeta) AddLogContext(c zerolog.Context) zerolog.Context

func (*SlackEventMeta) GetID

func (s *SlackEventMeta) GetID() networkid.MessageID

func (*SlackEventMeta) GetPortalKey

func (s *SlackEventMeta) GetPortalKey() networkid.PortalKey

func (*SlackEventMeta) GetSender

func (s *SlackEventMeta) GetSender() bridgev2.EventSender

func (*SlackEventMeta) GetTimestamp

func (s *SlackEventMeta) GetTimestamp() time.Time

func (*SlackEventMeta) GetType

func (*SlackEventMeta) ShouldCreatePortal

func (s *SlackEventMeta) ShouldCreatePortal() bool

type SlackMessage

type SlackMessage struct {
	*SlackEventMeta
	Data   *slack.MessageEvent
	Client *SlackClient
}

func (*SlackMessage) ConvertEdit

func (s *SlackMessage) ConvertEdit(ctx context.Context, portal *bridgev2.Portal, intent bridgev2.MatrixAPI, existing []*database.Message) (*bridgev2.ConvertedEdit, error)

func (*SlackMessage) ConvertMessage

func (s *SlackMessage) ConvertMessage(ctx context.Context, portal *bridgev2.Portal, intent bridgev2.MatrixAPI) (*bridgev2.ConvertedMessage, error)

func (*SlackMessage) GetID

func (s *SlackMessage) GetID() networkid.MessageID

func (*SlackMessage) GetTargetMessage

func (s *SlackMessage) GetTargetMessage() networkid.MessageID

func (*SlackMessage) GetTimestamp

func (s *SlackMessage) GetTimestamp() time.Time

func (*SlackMessage) GetTransactionID

func (s *SlackMessage) GetTransactionID() networkid.TransactionID

func (*SlackMessage) GetType

func (s *SlackMessage) GetType() bridgev2.RemoteEventType

type SlackReaction

type SlackReaction struct {
	*SlackEventMeta
	TargetID networkid.MessageID
	EmojiID  networkid.EmojiID
	Emoji    string
	Meta     map[string]any
}

func (*SlackReaction) GetReactionEmoji

func (s *SlackReaction) GetReactionEmoji() (string, networkid.EmojiID)

func (*SlackReaction) GetReactionExtraContent

func (s *SlackReaction) GetReactionExtraContent() map[string]any

func (*SlackReaction) GetRemovedEmojiID

func (s *SlackReaction) GetRemovedEmojiID() networkid.EmojiID

func (*SlackReaction) GetTargetMessage

func (s *SlackReaction) GetTargetMessage() networkid.MessageID

type SlackReadReceipt

type SlackReadReceipt struct {
	*SlackEventMeta
}

func (*SlackReadReceipt) GetLastReceiptTarget

func (s *SlackReadReceipt) GetLastReceiptTarget() networkid.MessageID

func (*SlackReadReceipt) GetReadUpTo

func (s *SlackReadReceipt) GetReadUpTo() time.Time

func (*SlackReadReceipt) GetReceiptTargets

func (s *SlackReadReceipt) GetReceiptTargets() []networkid.MessageID

type SlackTokenLogin

type SlackTokenLogin struct {
	User *bridgev2.User
}

func (*SlackTokenLogin) Cancel

func (s *SlackTokenLogin) Cancel()

func (*SlackTokenLogin) Start

func (*SlackTokenLogin) SubmitCookies

func (s *SlackTokenLogin) SubmitCookies(ctx context.Context, input map[string]string) (*bridgev2.LoginStep, error)

type SlackTyping

type SlackTyping struct {
	*SlackEventMeta
}

func (*SlackTyping) GetTimeout

func (s *SlackTyping) GetTimeout() time.Duration

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL