msteams

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Sep 21, 2026 License: Apache-2.0 Imports: 39 Imported by: 0

Documentation

Overview

Copyright (c) 2023-present Mattermost, Inc. All Rights Reserved. See LICENSE.txt for license information.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetAuthURL

func GetAuthURL(cloudEnv cloudenv.Environment, redirectURL string, tenantID string, clientID string, clientSecret string, state string, codeVerifier string) string

GetAuthURL builds the delegated OAuth authorize URL. Like NewTokenClient, its per-cloud wiring is unverified: there are no in-repo callers of the delegated flow today, so verify against a gov tenant before relying on this path.

func GetMessageFromJSON

func GetMessageFromJSON(data []byte, teamID, channelID, chatID string) (*clientmodels.Message, error)

func GetResourceIDs

func GetResourceIDs(resource string) clientmodels.ActivityIDs

func IsOAuthError

func IsOAuthError(err error) bool

func NormalizeGraphAPIError

func NormalizeGraphAPIError(err error) error

Types

type AccessToken

type AccessToken struct {
	// contains filtered or unexported fields
}

func (AccessToken) GetToken

type Activity

type Activity struct {
	Resource                       string
	ClientState                    string
	ChangeType                     string
	LifecycleEvent                 string
	SubscriptionExpirationDateTime time.Time
	SubscriptionID                 string
	EncryptedContent               *EncryptedContent
	Content                        []byte
}

type ChatMessageAttachment

type ChatMessageAttachment struct {
	MessageID      string                      `json:"messageId"`
	MessagePreview string                      `json:"messagePreview"`
	MessageSender  ChatMessageAttachmentSender `json:"messageSender"`
}

type ChatMessageAttachmentSender

type ChatMessageAttachmentSender struct {
	User ChatMessageAttachmentUser `json:"user"`
}

type ChatMessageAttachmentUser

type ChatMessageAttachmentUser struct {
	UserIdentityType string `json:"userIdentityType"`
	ID               string `json:"id"`
	DisplayName      string `json:"displayName"`
}

type Client

type Client interface {
	Connect() error
	CreateOrGetChatForUsers(usersIDs []string) (*clientmodels.Chat, error)
	SendMessage(teamID, channelID, parentID, message string) (*clientmodels.Message, error)
	SendMessageWithAttachments(teamID, channelID, parentID, message string, attachments []*clientmodels.Attachment, mentions []models.ChatMessageMentionable) (*clientmodels.Message, error)
	SendChat(chatID, message string, parentMessage *clientmodels.Message, attachments []*clientmodels.Attachment, mentions []models.ChatMessageMentionable) (*clientmodels.Message, error)
	UploadFile(teamID, channelID, filename string, filesize int, mimeType string, data io.Reader, chat *clientmodels.Chat) (*clientmodels.Attachment, error)
	UpdateMessage(teamID, channelID, parentID, msgID, message string, mentions []models.ChatMessageMentionable) (*clientmodels.Message, error)
	UpdateChatMessage(chatID, msgID, message string, mentions []models.ChatMessageMentionable) (*clientmodels.Message, error)
	DeleteMessage(teamID, channelID, parentID, msgID string) error
	DeleteChatMessage(userID, chatID, msgID string) error
	SubscribeToChannels(baseURL, webhookSecret string, pay bool, certificate string) (*clientmodels.Subscription, error)
	SubscribeToChats(baseURL, webhookSecret string, pay bool, certificate string) (*clientmodels.Subscription, error)
	SubscribeToChannel(teamID, channelID, baseURL, webhookSecret, certificate string) (*clientmodels.Subscription, error)
	SubscribeToUserChats(user, baseURL, webhookSecret string, pay bool, certificate string) (*clientmodels.Subscription, error)
	RefreshSubscription(subscriptionID string) (*time.Time, error)
	DeleteSubscription(subscriptionID string) error
	ListSubscriptions() ([]*clientmodels.Subscription, error)
	GetTeam(teamID string) (*clientmodels.Team, error)
	GetTeams(filterQuery string) ([]*clientmodels.Team, error)
	GetChannelInTeam(teamID, channelID string) (*clientmodels.Channel, error)
	GetChannelsInTeam(teamID, filterQuery string) ([]*clientmodels.Channel, error)
	GetChat(chatID string) (*clientmodels.Chat, error)
	GetChatMessage(chatID, messageID string) (*clientmodels.Message, error)
	SetChatReaction(chatID, messageID, userID, emoji string) (*clientmodels.Message, error)
	SetReaction(teamID, channelID, parentID, messageID, userID, emoji string) (*clientmodels.Message, error)
	UnsetChatReaction(chatID, messageID, userID, emoji string) (*clientmodels.Message, error)
	UnsetReaction(teamID, channelID, parentID, messageID, userID, emoji string) (*clientmodels.Message, error)
	GetMessage(teamID, channelID, messageID string) (*clientmodels.Message, error)
	GetReply(teamID, channelID, messageID, replyID string) (*clientmodels.Message, error)
	GetUserAvatar(userID string) ([]byte, error)
	GetUser(userID string) (*clientmodels.User, error)
	GetMyID() (string, error)
	GetMe() (*clientmodels.User, error)
	GetFileSizeAndDownloadURL(weburl string) (int64, string, error)
	GetFileContent(downloadURL string) ([]byte, error)
	GetFileContentStream(downloadURL string, writer *io.PipeWriter, bufferSize int64)
	GetHostedFileContent(activityIDs *clientmodels.ActivityIDs) ([]byte, error)
	GetCodeSnippet(url string) (string, error)
	RefreshToken(token *oauth2.Token) (*oauth2.Token, error)
	ListUsers() ([]clientmodels.User, error)
	ListTeams() ([]clientmodels.Team, error)
	ListChannels(teamID string) ([]clientmodels.Channel, error)
	ListChannelMessages(teamID, channelID string, since time.Time) ([]*clientmodels.Message, error)
	ListChatMessages(chatID string, since time.Time) ([]*clientmodels.Message, error)
	GetApp(applicationID string) (*clientmodels.App, error)
	GetPresencesForUsers(userIDs []string) (map[string]clientmodels.Presence, error)
	GetTeamsAppIDByExternalID(externalID string) (string, error)
	SendUserActivity(userIDs []string, activityType, message string, webURL url.URL, params map[string]string) error
	GetTenantID() string
}

func NewApp

func NewApp(cloudEnv cloudenv.Environment, tenantID, clientID, clientSecret string, logService *pluginapi.LogService) Client

func NewManualClient

func NewManualClient(tenantID, clientID string, logService *pluginapi.LogService, client *msgraphsdk.GraphServiceClient) Client

NewManualClient wraps a pre-built Graph client (the caller supplies the client and therefore its endpoint), so the cloud environment here is only used for any incidental cloud-derived values. It intentionally hardcodes the commercial cloud: it has no in-repo callers today, so no national cloud is threaded in. If it gains a caller for a gov tenant, thread the cloud environment through.

func NewTokenClient

func NewTokenClient(cloudEnv cloudenv.Environment, redirectURL, tenantID, clientID, clientSecret string, token *oauth2.Token, logService *pluginapi.LogService) Client

NewTokenClient builds a delegated (user token) client. Its cloud wiring is unverified: there are no in-repo callers of the delegated OAuth flow today, so the per-cloud OAuth endpoints below have not been exercised end to end. Verify against a gov tenant before relying on this path.

type ClientImpl

type ClientImpl struct {
	// contains filtered or unexported fields
}

func (*ClientImpl) Connect

func (tc *ClientImpl) Connect() error

func (*ClientImpl) CreateChat

func (tc *ClientImpl) CreateChat(chatType models.ChatType, userIDs []string) (*clientmodels.Chat, error)

func (*ClientImpl) CreateOrGetChatForUsers

func (tc *ClientImpl) CreateOrGetChatForUsers(userIDs []string) (*clientmodels.Chat, error)

func (*ClientImpl) DeleteChatMessage

func (tc *ClientImpl) DeleteChatMessage(userID, chatID, msgID string) error

func (*ClientImpl) DeleteMessage

func (tc *ClientImpl) DeleteMessage(teamID, channelID, parentID, msgID string) error

func (*ClientImpl) DeleteSubscription

func (tc *ClientImpl) DeleteSubscription(subscriptionID string) error

func (*ClientImpl) GetApp

func (tc *ClientImpl) GetApp(applicationID string) (*clientmodels.App, error)

func (*ClientImpl) GetChannelInTeam

func (tc *ClientImpl) GetChannelInTeam(teamID, channelID string) (*clientmodels.Channel, error)

func (*ClientImpl) GetChannelsInTeam

func (tc *ClientImpl) GetChannelsInTeam(teamID, filterQuery string) ([]*clientmodels.Channel, error)

func (*ClientImpl) GetChat

func (tc *ClientImpl) GetChat(chatID string) (*clientmodels.Chat, error)

func (*ClientImpl) GetChatMessage

func (tc *ClientImpl) GetChatMessage(chatID, messageID string) (*clientmodels.Message, error)

func (*ClientImpl) GetCodeSnippet

func (tc *ClientImpl) GetCodeSnippet(url string) (string, error)

func (*ClientImpl) GetFileContent

func (tc *ClientImpl) GetFileContent(downloadURL string) ([]byte, error)

func (*ClientImpl) GetFileContentStream

func (tc *ClientImpl) GetFileContentStream(downloadURL string, writer *io.PipeWriter, bufferSize int64)

func (*ClientImpl) GetFileSizeAndDownloadURL

func (tc *ClientImpl) GetFileSizeAndDownloadURL(weburl string) (int64, string, error)

func (*ClientImpl) GetHostedFileContent

func (tc *ClientImpl) GetHostedFileContent(activityIDs *clientmodels.ActivityIDs) (contentData []byte, err error)

func (*ClientImpl) GetMe

func (tc *ClientImpl) GetMe() (*clientmodels.User, error)

func (*ClientImpl) GetMessage

func (tc *ClientImpl) GetMessage(teamID, channelID, messageID string) (*clientmodels.Message, error)

func (*ClientImpl) GetMyID

func (tc *ClientImpl) GetMyID() (string, error)

func (*ClientImpl) GetPresencesForUsers

func (tc *ClientImpl) GetPresencesForUsers(userIDs []string) (map[string]clientmodels.Presence, error)

func (*ClientImpl) GetReply

func (tc *ClientImpl) GetReply(teamID, channelID, messageID, replyID string) (*clientmodels.Message, error)

func (*ClientImpl) GetTeam

func (tc *ClientImpl) GetTeam(teamID string) (*clientmodels.Team, error)

func (*ClientImpl) GetTeams

func (tc *ClientImpl) GetTeams(filterQuery string) ([]*clientmodels.Team, error)

func (*ClientImpl) GetTeamsAppIDByExternalID

func (tc *ClientImpl) GetTeamsAppIDByExternalID(externalID string) (string, error)

func (*ClientImpl) GetTenantID

func (tc *ClientImpl) GetTenantID() string

func (*ClientImpl) GetUser

func (tc *ClientImpl) GetUser(userID string) (*clientmodels.User, error)

func (*ClientImpl) GetUserAvatar

func (tc *ClientImpl) GetUserAvatar(userID string) ([]byte, error)

func (*ClientImpl) ListChannelMessages

func (tc *ClientImpl) ListChannelMessages(teamID string, channelID string, since time.Time) ([]*clientmodels.Message, error)

func (*ClientImpl) ListChannels

func (tc *ClientImpl) ListChannels(teamID string) ([]clientmodels.Channel, error)

func (*ClientImpl) ListChatMessages

func (tc *ClientImpl) ListChatMessages(chatID string, since time.Time) ([]*clientmodels.Message, error)

func (*ClientImpl) ListSubscriptions

func (tc *ClientImpl) ListSubscriptions() ([]*clientmodels.Subscription, error)

func (*ClientImpl) ListTeams

func (tc *ClientImpl) ListTeams() ([]clientmodels.Team, error)

func (*ClientImpl) ListUsers

func (tc *ClientImpl) ListUsers() ([]clientmodels.User, error)

func (*ClientImpl) RefreshSubscription

func (tc *ClientImpl) RefreshSubscription(subscriptionID string) (*time.Time, error)

func (*ClientImpl) RefreshToken

func (tc *ClientImpl) RefreshToken(token *oauth2.Token) (*oauth2.Token, error)

func (*ClientImpl) SendBatchRequestAndGetMessage

func (tc *ClientImpl) SendBatchRequestAndGetMessage(batchRequest msgraphcore.BatchRequest, getMessageRequestItem msgraphcore.BatchItem) (*clientmodels.Message, error)

func (*ClientImpl) SendChat

func (tc *ClientImpl) SendChat(chatID, message string, parentMessage *clientmodels.Message, attachments []*clientmodels.Attachment, mentions []models.ChatMessageMentionable) (*clientmodels.Message, error)

func (*ClientImpl) SendMessage

func (tc *ClientImpl) SendMessage(teamID, channelID, parentID, message string) (*clientmodels.Message, error)

func (*ClientImpl) SendMessageWithAttachments

func (tc *ClientImpl) SendMessageWithAttachments(teamID, channelID, parentID, message string, attachments []*clientmodels.Attachment, mentions []models.ChatMessageMentionable) (*clientmodels.Message, error)

func (*ClientImpl) SendUserActivity

func (tc *ClientImpl) SendUserActivity(userIDs []string, activityType, message string, webURL url.URL, params map[string]string) error

func (*ClientImpl) SetChatReaction

func (tc *ClientImpl) SetChatReaction(chatID, messageID, userID, emoji string) (*clientmodels.Message, error)

func (*ClientImpl) SetReaction

func (tc *ClientImpl) SetReaction(teamID, channelID, parentID, messageID, userID, emoji string) (*clientmodels.Message, error)

func (*ClientImpl) SubscribeToChannel

func (tc *ClientImpl) SubscribeToChannel(teamID, channelID, baseURL, webhookSecret string, certificate string) (*clientmodels.Subscription, error)

func (*ClientImpl) SubscribeToChannels

func (tc *ClientImpl) SubscribeToChannels(baseURL, webhookSecret string, pay bool, certificate string) (*clientmodels.Subscription, error)

func (*ClientImpl) SubscribeToChats

func (tc *ClientImpl) SubscribeToChats(baseURL, webhookSecret string, pay bool, certificate string) (*clientmodels.Subscription, error)

func (*ClientImpl) SubscribeToUserChats

func (tc *ClientImpl) SubscribeToUserChats(userID, baseURL, webhookSecret string, pay bool, certificate string) (*clientmodels.Subscription, error)

func (*ClientImpl) UnsetChatReaction

func (tc *ClientImpl) UnsetChatReaction(chatID, messageID, userID, emoji string) (*clientmodels.Message, error)

func (*ClientImpl) UnsetReaction

func (tc *ClientImpl) UnsetReaction(teamID, channelID, parentID, messageID, userID, emoji string) (*clientmodels.Message, error)

func (*ClientImpl) UpdateChatMessage

func (tc *ClientImpl) UpdateChatMessage(chatID, msgID, message string, mentions []models.ChatMessageMentionable) (*clientmodels.Message, error)

func (*ClientImpl) UpdateMessage

func (tc *ClientImpl) UpdateMessage(teamID, channelID, parentID, msgID, message string, mentions []models.ChatMessageMentionable) (*clientmodels.Message, error)

func (*ClientImpl) UploadFile

func (tc *ClientImpl) UploadFile(teamID, channelID, filename string, filesize int, mimeType string, data io.Reader, chat *clientmodels.Chat) (*clientmodels.Attachment, error)

type ConcurrentGraphRequestAdapter

type ConcurrentGraphRequestAdapter struct {
	msgraphsdk.GraphRequestAdapter
	// contains filtered or unexported fields
}

func (*ConcurrentGraphRequestAdapter) GetSerializationWriterFactory

func (a *ConcurrentGraphRequestAdapter) GetSerializationWriterFactory() serialization.SerializationWriterFactory

type ConcurrentSerializationWriterFactory

type ConcurrentSerializationWriterFactory struct {
	serialization.SerializationWriterFactory
	// contains filtered or unexported fields
}

func (*ConcurrentSerializationWriterFactory) GetSerializationWriter

func (sf *ConcurrentSerializationWriterFactory) GetSerializationWriter(contentType string) (serialization.SerializationWriter, error)

type EncryptedContent

type EncryptedContent struct {
	Data                    string
	DataKey                 string
	DataSignature           string
	EncryptionCertificateID string
}

type GraphAPIError

type GraphAPIError struct {
	Code            string    `json:"code"`
	StatusCode      int       `json:"status_code"`
	Message         string    `json:"message"`
	ClientRequestID string    `json:"client_request_id"`
	RequestID       string    `json:"request_id"`
	Timestamp       time.Time `json:"timestamp"`
}

func (*GraphAPIError) Error

func (e *GraphAPIError) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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