introduces the Chats service and Chats category --- #### Does this PR need a docs update or release note? - [x] ⛔ No #### Type of change - [x] 🌻 Feature #### Issue(s) * #5061 #### Test Plan - [x] ⚡ Unit test - [x] 💚 E2E
75 lines
1.8 KiB
Go
75 lines
1.8 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/microsoftgraph/msgraph-sdk-go/chats"
|
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
|
|
|
"github.com/alcionai/corso/src/internal/common/ptr"
|
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
|
"github.com/alcionai/corso/src/pkg/services/m365/api/graph"
|
|
)
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// controller
|
|
// ---------------------------------------------------------------------------
|
|
|
|
func (c Client) Chats() Chats {
|
|
return Chats{c}
|
|
}
|
|
|
|
// Chats is an interface-compliant provider of the client.
|
|
type Chats struct {
|
|
Client
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Chats
|
|
// ---------------------------------------------------------------------------
|
|
|
|
func (c Chats) GetChatByID(
|
|
ctx context.Context,
|
|
chatID string,
|
|
cc CallConfig,
|
|
) (models.Chatable, *details.TeamsChatsInfo, error) {
|
|
config := &chats.ChatItemRequestBuilderGetRequestConfiguration{
|
|
QueryParameters: &chats.ChatItemRequestBuilderGetQueryParameters{},
|
|
}
|
|
|
|
if len(cc.Select) > 0 {
|
|
config.QueryParameters.Select = cc.Select
|
|
}
|
|
|
|
if len(cc.Expand) > 0 {
|
|
config.QueryParameters.Expand = cc.Expand
|
|
}
|
|
|
|
resp, err := c.Stable.
|
|
Client().
|
|
Chats().
|
|
ByChatId(chatID).
|
|
Get(ctx, config)
|
|
if err != nil {
|
|
return nil, nil, graph.Stack(ctx, err)
|
|
}
|
|
|
|
return resp, TeamsChatInfo(resp), nil
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Helpers
|
|
// ---------------------------------------------------------------------------
|
|
|
|
func TeamsChatInfo(chat models.Chatable) *details.TeamsChatsInfo {
|
|
return &details.TeamsChatsInfo{
|
|
ItemType: details.TeamsChat,
|
|
Modified: ptr.OrNow(chat.GetLastUpdatedDateTime()),
|
|
|
|
Chat: details.ChatInfo{
|
|
CreatedAt: ptr.OrNow(chat.GetCreatedDateTime()),
|
|
Name: ptr.Val(chat.GetTopic()),
|
|
},
|
|
}
|
|
}
|