MetaData: Pages Backup Info Support (#2084)
## Description SharePointInfo extended to include SitePageable objects. **NOTE:** Merge includes the beta graph package and will affect the compile time. <!-- Insert PR description--> ## Does this PR need a docs update or release note? - [x] ⛔ No ## Type of change <!--- Please check the type of change your PR introduces: ---> - [x] 🌻 Feature ## Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * closes #2069<issue> * related #2071 ## Test Plan - [x] ⚡ Unit test
This commit is contained in:
parent
1db101ca17
commit
70ebaa6b0d
@ -21,32 +21,32 @@ func TestSharePointInfoSuite(t *testing.T) {
|
||||
func (suite *SharePointInfoSuite) TestSharePointInfo() {
|
||||
tests := []struct {
|
||||
name string
|
||||
listAndRP func() (models.Listable, *details.SharePointInfo)
|
||||
listAndDeets func() (models.Listable, *details.SharePointInfo)
|
||||
}{
|
||||
{
|
||||
name: "Empty List",
|
||||
listAndRP: func() (models.Listable, *details.SharePointInfo) {
|
||||
listAndDeets: func() (models.Listable, *details.SharePointInfo) {
|
||||
i := &details.SharePointInfo{ItemType: details.SharePointItem}
|
||||
return models.NewList(), i
|
||||
},
|
||||
}, {
|
||||
name: "Only Name",
|
||||
listAndRP: func() (models.Listable, *details.SharePointInfo) {
|
||||
listAndDeets: func() (models.Listable, *details.SharePointInfo) {
|
||||
aTitle := "Whole List"
|
||||
listing := models.NewList()
|
||||
listing.SetDisplayName(&aTitle)
|
||||
i := &details.SharePointInfo{
|
||||
ItemType: details.SharePointItem,
|
||||
ItemName: aTitle,
|
||||
Size: 10,
|
||||
}
|
||||
|
||||
return listing, i
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
suite.T().Run(test.name, func(t *testing.T) {
|
||||
list, expected := test.listAndRP()
|
||||
list, expected := test.listAndDeets()
|
||||
info := sharePointListInfo(list, 10)
|
||||
assert.Equal(t, expected.ItemType, info.ItemType)
|
||||
assert.Equal(t, expected.ItemName, info.ItemName)
|
||||
|
||||
42
src/internal/connector/sharepoint/pageInfo.go
Normal file
42
src/internal/connector/sharepoint/pageInfo.go
Normal file
@ -0,0 +1,42 @@
|
||||
package sharepoint
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||
)
|
||||
|
||||
// sharePointPageInfo propagates metadata from the SharePoint Page data type
|
||||
// into searchable content.
|
||||
// Page Details: https://learn.microsoft.com/en-us/graph/api/resources/sitepage?view=graph-rest-beta
|
||||
func sharePointPageInfo(page SitePageable, size int64) *details.SharePointInfo {
|
||||
var (
|
||||
name, webURL string
|
||||
created, modified time.Time
|
||||
)
|
||||
|
||||
if page.GetTitle() != nil {
|
||||
name = *page.GetTitle()
|
||||
}
|
||||
|
||||
if page.GetWebUrl() != nil {
|
||||
webURL = *page.GetWebUrl()
|
||||
}
|
||||
|
||||
if page.GetCreatedDateTime() != nil {
|
||||
created = *page.GetCreatedDateTime()
|
||||
}
|
||||
|
||||
if page.GetLastModifiedDateTime() != nil {
|
||||
modified = *page.GetLastModifiedDateTime()
|
||||
}
|
||||
|
||||
return &details.SharePointInfo{
|
||||
ItemType: details.SharePointItem,
|
||||
ItemName: name,
|
||||
Created: created,
|
||||
Modified: modified,
|
||||
WebURL: webURL,
|
||||
Size: size,
|
||||
}
|
||||
}
|
||||
47
src/internal/connector/sharepoint/pageInfo_test.go
Normal file
47
src/internal/connector/sharepoint/pageInfo_test.go
Normal file
@ -0,0 +1,47 @@
|
||||
package sharepoint
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||
)
|
||||
|
||||
func (suite *SharePointInfoSuite) TestSharePointInfo_Pages() {
|
||||
tests := []struct {
|
||||
name string
|
||||
pageAndDeets func() (SitePageable, *details.SharePointInfo)
|
||||
}{
|
||||
{
|
||||
name: "Empty Page",
|
||||
pageAndDeets: func() (SitePageable, *details.SharePointInfo) {
|
||||
deets := &details.SharePointInfo{ItemType: details.SharePointItem}
|
||||
return NewSitePage(), deets
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Only Name",
|
||||
pageAndDeets: func() (SitePageable, *details.SharePointInfo) {
|
||||
title := "Blank Page"
|
||||
sPage := NewSitePage()
|
||||
sPage.SetTitle(&title)
|
||||
deets := &details.SharePointInfo{
|
||||
ItemType: details.SharePointItem,
|
||||
ItemName: title,
|
||||
}
|
||||
|
||||
return sPage, deets
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
suite.T().Run(test.name, func(t *testing.T) {
|
||||
paged, expected := test.pageAndDeets()
|
||||
info := sharePointPageInfo(paged, 0)
|
||||
assert.Equal(t, expected.ItemType, info.ItemType)
|
||||
assert.Equal(t, expected.ItemName, info.ItemName)
|
||||
assert.Equal(t, expected.WebURL, info.WebURL)
|
||||
})
|
||||
}
|
||||
}
|
||||
187
src/internal/connector/sharepoint/site_page.go
Normal file
187
src/internal/connector/sharepoint/site_page.go
Normal file
@ -0,0 +1,187 @@
|
||||
package sharepoint
|
||||
|
||||
import (
|
||||
kioser "github.com/microsoft/kiota-abstractions-go/serialization"
|
||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||
)
|
||||
|
||||
// SitePage provides operations to manage the minimal creation of a Site Page.
|
||||
// Altered from original: github.com/microsoftgraph/msgraph-beta-sdk-go/models
|
||||
// TODO: remove when Issue #2086 resolved
|
||||
type SitePage struct {
|
||||
models.BaseItem
|
||||
// Indicates the layout of the content in a given SharePoint page, including horizontal sections and vertical section
|
||||
// canvasLayout models.CanvasLayoutable
|
||||
// Inherited from baseItem.
|
||||
contentType models.ContentTypeInfoable
|
||||
// The name of the page layout of the page.
|
||||
// The possible values are: microsoftReserved, article, home, unknownFutureValue.
|
||||
// pageLayout *models.PageLayoutType
|
||||
// Indicates the promotion kind of the sitePage. The possible values are:
|
||||
// microsoftReserved, page, newsPost, unknownFutureValue.
|
||||
// promotionKind *models.PagePromotionType
|
||||
// The publishing status and the MM.mm version of the page.
|
||||
publishingState models.PublicationFacetable
|
||||
// Reactions information for the page.
|
||||
// reactions models.ReactionsFacetable
|
||||
// Determines whether or not to show comments at the bottom of the page.
|
||||
showComments *bool
|
||||
// Determines whether or not to show recommended pages at the bottom of the page.
|
||||
showRecommendedPages *bool
|
||||
// Url of the sitePage's thumbnail image
|
||||
//revive:disable:var-naming
|
||||
thumbnailWebUrl *string
|
||||
//revive:enable:var-naming
|
||||
// Title of the sitePage.
|
||||
title *string
|
||||
}
|
||||
|
||||
// Title area on the SharePoint page.
|
||||
// titleArea models.TitleAreaable
|
||||
// Collection of webparts on the SharePoint page
|
||||
// webParts []models.WebPartable
|
||||
|
||||
var _ SitePageable = &SitePage{}
|
||||
|
||||
// NewSitePage instantiates a new sitePage and sets the default values.
|
||||
func NewSitePage() *SitePage {
|
||||
m := &SitePage{
|
||||
BaseItem: *models.NewBaseItem(),
|
||||
}
|
||||
odataTypeValue := "#microsoft.graph.sitePage"
|
||||
m.SetOdataType(&odataTypeValue)
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
// CreateSitePageFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value
|
||||
func CreateSitePageFromDiscriminatorValue(parseNode kioser.ParseNode) (kioser.Parsable, error) {
|
||||
return NewSitePage(), nil
|
||||
}
|
||||
|
||||
// GetContentType gets the contentType property value. Inherited from baseItem.
|
||||
func (m *SitePage) GetContentType() models.ContentTypeInfoable {
|
||||
return m.contentType
|
||||
}
|
||||
|
||||
// GetFieldDeserializers the deserialization information for the current model
|
||||
// Altered from original.
|
||||
func (m *SitePage) GetFieldDeserializers() map[string]func(kioser.ParseNode) error {
|
||||
res := m.BaseItem.GetFieldDeserializers()
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
// GetPublishingState gets the publishingState property value. The publishing status and the MM.mm version of the page.
|
||||
func (m *SitePage) GetPublishingState() models.PublicationFacetable {
|
||||
return m.publishingState
|
||||
}
|
||||
|
||||
// GetShowComments gets the showComments property value.
|
||||
// Determines whether or not to show comments at the bottom of the page.
|
||||
func (m *SitePage) GetShowComments() *bool {
|
||||
return m.showComments
|
||||
}
|
||||
|
||||
// GetShowRecommendedPages gets the showRecommendedPages property value.
|
||||
// Determines whether or not to show recommended pages at the bottom of the page.
|
||||
func (m *SitePage) GetShowRecommendedPages() *bool {
|
||||
return m.showRecommendedPages
|
||||
}
|
||||
|
||||
// GetThumbnailWebUrl gets the thumbnailWebUrl property value. Url of the sitePage's thumbnail image
|
||||
//
|
||||
//revive:disable:var-naming
|
||||
func (m *SitePage) GetThumbnailWebUrl() *string {
|
||||
return m.thumbnailWebUrl
|
||||
}
|
||||
|
||||
// GetTitle gets the title property value. Title of the sitePage.
|
||||
func (m *SitePage) GetTitle() *string {
|
||||
return m.title
|
||||
}
|
||||
|
||||
// Serialize serializes information the current object
|
||||
func (m *SitePage) Serialize(writer kioser.SerializationWriter) error {
|
||||
err := m.BaseItem.Serialize(writer)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if m.GetContentType() != nil {
|
||||
err = writer.WriteObjectValue("contentType", m.GetContentType())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if m.GetPublishingState() != nil {
|
||||
err = writer.WriteObjectValue("publishingState", m.GetPublishingState())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
{
|
||||
err = writer.WriteBoolValue("showComments", m.GetShowComments())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
{
|
||||
err = writer.WriteBoolValue("showRecommendedPages", m.GetShowRecommendedPages())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
{
|
||||
err = writer.WriteStringValue("thumbnailWebUrl", m.GetThumbnailWebUrl())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
{
|
||||
err = writer.WriteStringValue("title", m.GetTitle())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetContentType sets the contentType property value. Inherited from baseItem.
|
||||
func (m *SitePage) SetContentType(value models.ContentTypeInfoable) {
|
||||
m.contentType = value
|
||||
}
|
||||
|
||||
// SetPublishingState sets the publishingState property value. The publishing status and the MM.mm version of the page.
|
||||
func (m *SitePage) SetPublishingState(value models.PublicationFacetable) {
|
||||
m.publishingState = value
|
||||
}
|
||||
|
||||
// SetShowComments sets the showComments property value.
|
||||
// Determines whether or not to show comments at the bottom of the page.
|
||||
func (m *SitePage) SetShowComments(value *bool) {
|
||||
m.showComments = value
|
||||
}
|
||||
|
||||
// SetShowRecommendedPages sets the showRecommendedPages property value.
|
||||
// Determines whether or not to show recommended pages at the bottom of the page.
|
||||
func (m *SitePage) SetShowRecommendedPages(value *bool) {
|
||||
m.showRecommendedPages = value
|
||||
}
|
||||
|
||||
// SetThumbnailWebUrl sets the thumbnailWebUrl property value.
|
||||
// Url of the sitePage's thumbnail image
|
||||
//
|
||||
//revive:disable:var-naming
|
||||
func (m *SitePage) SetThumbnailWebUrl(value *string) {
|
||||
m.thumbnailWebUrl = value
|
||||
}
|
||||
|
||||
//revive:enable:var-naming
|
||||
|
||||
// SetTitle sets the title property value. Title of the sitePage.
|
||||
func (m *SitePage) SetTitle(value *string) {
|
||||
m.title = value
|
||||
}
|
||||
24
src/internal/connector/sharepoint/site_pageable.go
Normal file
24
src/internal/connector/sharepoint/site_pageable.go
Normal file
@ -0,0 +1,24 @@
|
||||
package sharepoint
|
||||
|
||||
import (
|
||||
"github.com/microsoft/kiota-abstractions-go/serialization"
|
||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||
)
|
||||
|
||||
// SitePageable adjusted from msgraph-beta-sdk-go for temporary testing
|
||||
type SitePageable interface {
|
||||
models.BaseItemable
|
||||
serialization.Parsable
|
||||
GetContentType() models.ContentTypeInfoable
|
||||
GetPublishingState() models.PublicationFacetable
|
||||
GetShowComments() *bool
|
||||
GetShowRecommendedPages() *bool
|
||||
GetThumbnailWebUrl() *string
|
||||
GetTitle() *string
|
||||
SetContentType(value models.ContentTypeInfoable)
|
||||
SetPublishingState(value models.PublicationFacetable)
|
||||
SetShowComments(value *bool)
|
||||
SetShowRecommendedPages(value *bool)
|
||||
SetThumbnailWebUrl(value *string)
|
||||
SetTitle(value *string)
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user