From ca641e0116933f1b8daa45d445c0cc780af409ce Mon Sep 17 00:00:00 2001 From: Danny Adams Date: Sat, 21 Jan 2023 21:25:34 -0500 Subject: [PATCH] Updates to /connector/sharepoint/restore.go Issue #2169: Publish API added to restore of Page Item. --- src/internal/connector/sharepoint/restore.go | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/internal/connector/sharepoint/restore.go b/src/internal/connector/sharepoint/restore.go index b851924c2..ad3691f3b 100644 --- a/src/internal/connector/sharepoint/restore.go +++ b/src/internal/connector/sharepoint/restore.go @@ -7,6 +7,7 @@ import ( "runtime/trace" "github.com/microsoftgraph/msgraph-beta-sdk-go/models" + "github.com/microsoftgraph/msgraph-beta-sdk-go/sites" "github.com/pkg/errors" "github.com/alcionai/corso/src/internal/connector/graph" @@ -283,6 +284,7 @@ func restoreSitePage( var ( dii = details.ItemInfo{} pageName = itemData.UUID() + pageURL string ) byteArray, err := io.ReadAll(itemData.ToReader()) @@ -296,6 +298,8 @@ func restoreSitePage( return dii, errors.Wrapf(err, "failed to create Page object %s", pageName) } + // POST the Publish + // https://learn.microsoft.com/en-us/graph/api/sitepage-create?view=graph-rest-beta restoredPage, err := service.Client().SitesById(siteID).Pages().Post(ctx, page, nil) if err != nil { sendErr := support.ConnectorStackErrorTraceWrap( @@ -306,6 +310,23 @@ func restoreSitePage( return dii, sendErr } + // Publish page to make visible + // See https://learn.microsoft.com/en-us/graph/api/sitepage-publish?view=graph-rest-beta + if restoredPage.GetWebUrl() == nil { + return dii, fmt.Errorf("created page %s did not return webURL from API", *restoredPage.GetId()) + } + + pageURL = *restoredPage.GetWebUrl() + publishRequest := sites.NewItemPagesItemPublishRequestBuilder(pageURL, service.Adapter()) + + err = publishRequest.Post(ctx, nil) + if err != nil { + return dii, support.ConnectorStackErrorTraceWrap( + err, + "unable to publish page ID: "+*restoredPage.GetId()+" API Error Details", + ) + } + dii.SharePoint = sharePointPageInfo(restoredPage, int64(len(byteArray))) return dii, nil