corso/src/pkg/services/m365/api/teamsChats.go
Keepers 8e6a47b103
add chats service and category to paths (#5065)
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
2024-01-29 22:03:31 +00:00

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()),
},
}
}