From dea9ac8d73c5d34bf5a9ecc027877b8b57306ca8 Mon Sep 17 00:00:00 2001 From: Gautam Sheth <gautam.sheth@staffbase.com> Date: Sun, 6 Oct 2024 22:47:54 +0300 Subject: [PATCH] Refactor RecycleBin cmdlets to use PnP Core SDK where possible --- .../Base/PipeBinds/RecycleBinItemPipeBind.cs | 25 ++++++++++++++++--- .../RecycleBin/ClearRecycleBinItem.cs | 16 +++++------- src/Commands/RecycleBin/MoveRecycleBinItem.cs | 11 +++----- .../RecycleBin/RestoreRecycleBinItem.cs | 12 +++------ 4 files changed, 35 insertions(+), 29 deletions(-) diff --git a/src/Commands/Base/PipeBinds/RecycleBinItemPipeBind.cs b/src/Commands/Base/PipeBinds/RecycleBinItemPipeBind.cs index 51bf5d955..cc3ca1673 100644 --- a/src/Commands/Base/PipeBinds/RecycleBinItemPipeBind.cs +++ b/src/Commands/Base/PipeBinds/RecycleBinItemPipeBind.cs @@ -1,19 +1,21 @@ -using System; -using Microsoft.SharePoint.Client; - +using Microsoft.SharePoint.Client; +using PnP.Core.Model.SharePoint; using PnP.PowerShell.Commands.Model.SharePoint; +using System; namespace PnP.PowerShell.Commands.Base.PipeBinds { public sealed class RecycleBinItemPipeBind { private RecycleBinItem _item; + private IRecycleBinItem _recycleBinItem; private readonly Guid? _id; public RecycleBinItemPipeBind() { _item = null; _id = null; + _recycleBinItem = null; } public RecycleBinItemPipeBind(RecycleBinItem item) @@ -26,6 +28,11 @@ public RecycleBinItemPipeBind(RecycleResult result) _id = result.RecycleBinItemId; } + public RecycleBinItemPipeBind(IRecycleBinItem result) + { + _recycleBinItem = result; + } + public RecycleBinItemPipeBind(string id) { Guid guid; @@ -42,6 +49,8 @@ public RecycleBinItemPipeBind(string id) public RecycleBinItem Item => _item; + public IRecycleBinItem RecycleBinItem => _recycleBinItem; + public Guid? Id => _id; internal RecycleBinItem GetRecycleBinItem(Microsoft.SharePoint.Client.Site site) @@ -54,5 +63,15 @@ internal RecycleBinItem GetRecycleBinItem(Microsoft.SharePoint.Client.Site site) site.Context.ExecuteQueryRetry(); return Item; } + + internal IRecycleBinItem GetRecycleBinItem(Core.Services.PnPContext context) + { + if (RecycleBinItem != null) return RecycleBinItem; + if (!_id.HasValue) return null; + + _recycleBinItem = context.Site.RecycleBin.GetById(_id.Value, r => r.LeafName); + + return RecycleBinItem; + } } } diff --git a/src/Commands/RecycleBin/ClearRecycleBinItem.cs b/src/Commands/RecycleBin/ClearRecycleBinItem.cs index d9d3171ea..37f5f09e2 100644 --- a/src/Commands/RecycleBin/ClearRecycleBinItem.cs +++ b/src/Commands/RecycleBin/ClearRecycleBinItem.cs @@ -1,8 +1,7 @@ -using System.Management.Automation; -using Microsoft.SharePoint.Client; - +using Microsoft.SharePoint.Client; using PnP.PowerShell.Commands.Base.PipeBinds; using PnP.PowerShell.Commands.Utilities; +using System.Management.Automation; using Resources = PnP.PowerShell.Commands.Properties.Resources; namespace PnP.PowerShell.Commands.RecycleBin @@ -34,12 +33,11 @@ protected override void ExecuteCmdlet() switch (ParameterSetName) { case PARAMETERSET_IDENTITY: - var recycleBinItem = Identity.GetRecycleBinItem(ClientContext.Site); + var recycleBinItem = Identity.GetRecycleBinItem(Connection.PnPContext); if (Force || ShouldContinue(string.Format(Resources.ClearRecycleBinItem, recycleBinItem.LeafName), Resources.Confirm)) { - recycleBinItem.DeleteObject(); - ClientContext.ExecuteQueryRetry(); + recycleBinItem.Delete(); } break; case PARAMETERSET_ALL: @@ -64,16 +62,14 @@ protected override void ExecuteCmdlet() { if (Force || ShouldContinue(Resources.ClearSecondStageRecycleBin, Resources.Confirm)) { - ClientContext.Site.RecycleBin.DeleteAllSecondStageItems(); - ClientContext.ExecuteQueryRetry(); + Connection.PnPContext.Site.RecycleBin.DeleteAllSecondStageItems(); } } else { if (Force || ShouldContinue(Resources.ClearBothRecycleBins, Resources.Confirm)) { - ClientContext.Site.RecycleBin.DeleteAll(); - ClientContext.ExecuteQueryRetry(); + Connection.PnPContext.Site.RecycleBin.DeleteAll(); } } } diff --git a/src/Commands/RecycleBin/MoveRecycleBinItem.cs b/src/Commands/RecycleBin/MoveRecycleBinItem.cs index dcec2692c..711e51f71 100644 --- a/src/Commands/RecycleBin/MoveRecycleBinItem.cs +++ b/src/Commands/RecycleBin/MoveRecycleBinItem.cs @@ -1,8 +1,5 @@ -using System; +using PnP.PowerShell.Commands.Base.PipeBinds; using System.Management.Automation; -using Microsoft.SharePoint.Client; - -using PnP.PowerShell.Commands.Base.PipeBinds; using Resources = PnP.PowerShell.Commands.Properties.Resources; namespace PnP.PowerShell.Commands.RecycleBin @@ -20,19 +17,17 @@ protected override void ExecuteCmdlet() { if (ParameterSpecified(nameof(Identity))) { - var item = Identity.GetRecycleBinItem(ClientContext.Site); + var item = Identity.GetRecycleBinItem(Connection.PnPContext); if (Force || ShouldContinue(string.Format(Resources.MoveRecycleBinItemWithLeaf0ToSecondStage, item.LeafName), Resources.Confirm)) { item.MoveToSecondStage(); - ClientContext.ExecuteQueryRetry(); } } else { if (Force || ShouldContinue(Resources.MoveFirstStageRecycleBinItemsToSecondStage, Resources.Confirm)) { - ClientContext.Site.RecycleBin.MoveAllToSecondStage(); - ClientContext.ExecuteQueryRetry(); + Connection.PnPContext.Site.RecycleBin.MoveAllToSecondStage(); } } } diff --git a/src/Commands/RecycleBin/RestoreRecycleBinItem.cs b/src/Commands/RecycleBin/RestoreRecycleBinItem.cs index e51637575..18ec0ce80 100644 --- a/src/Commands/RecycleBin/RestoreRecycleBinItem.cs +++ b/src/Commands/RecycleBin/RestoreRecycleBinItem.cs @@ -1,9 +1,7 @@ -using System; -using System.Management.Automation; -using Microsoft.SharePoint.Client; - +using Microsoft.SharePoint.Client; using PnP.PowerShell.Commands.Base.PipeBinds; using PnP.PowerShell.Commands.Utilities; +using System.Management.Automation; using Resources = PnP.PowerShell.Commands.Properties.Resources; namespace PnP.PowerShell.Commands.RecycleBin @@ -25,12 +23,11 @@ protected override void ExecuteCmdlet() { if (ParameterSpecified(nameof(Identity))) { - var recycleBinItem = Identity.GetRecycleBinItem(ClientContext.Site); + var recycleBinItem = Identity.GetRecycleBinItem(Connection.PnPContext); if (Force || ShouldContinue(string.Format(Resources.RestoreRecycleBinItem, recycleBinItem.LeafName), Resources.Confirm)) { recycleBinItem.Restore(); - ClientContext.ExecuteQueryRetry(); } } else @@ -52,8 +49,7 @@ protected override void ExecuteCmdlet() { if (Force || ShouldContinue(Resources.RestoreRecycleBinItems, Resources.Confirm)) { - ClientContext.Site.RecycleBin.RestoreAll(); - ClientContext.ExecuteQueryRetry(); + Connection.PnPContext.Site.RecycleBin.RestoreAll(); } } }