Updates to /connector/sharepoint/restore.go

Issue #2169: Restore logic for sharepoint page.
This commit is contained in:
Danny Adams 2023-01-21 20:52:35 -05:00
parent b3cb8fec46
commit 607ca83177

View File

@ -270,3 +270,43 @@ func RestoreCollection(
}
}
}
func restoreSitePage(
ctx context.Context,
service graph.Servicer,
itemData data.Stream,
siteID, destName string,
) (details.ItemInfo, error) {
ctx, end := D.Span(ctx, "gc:sharepoint:restorePage", D.Label("item_uuid", itemData.UUID()))
defer end()
var (
dii = details.ItemInfo{}
pageName = itemData.UUID()
)
byteArray, err := io.ReadAll(itemData.ToReader())
if err != nil {
return dii, errors.Wrap(err, "sharepoint restorePage failed to restore bytes from data.Stream")
}
// Hydrate Page
page, err := support.CreatePageFromBytes(byteArray)
if err != nil {
return dii, errors.Wrapf(err, "failed to create Page object %s", pageName)
}
restoredPage, err := service.Client().SitesById(siteID).Pages().Post(ctx, page, nil)
if err != nil {
sendErr := support.ConnectorStackErrorTraceWrap(
err,
"failure to create page from ID: %s"+pageName+" API Error Details",
)
return dii, sendErr
}
dii.SharePoint = sharePointPageInfo(restoredPage, int64(len(byteArray)))
return dii, nil
}