/******************************************************************************* * Copyright 2012-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"). You may not use * this file except in compliance with the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. * ***************************************************************************** * * AWS Tools for Windows (TM) PowerShell (TM) * */ using System; using System.Linq; using System.Management.Automation; using Amazon.PowerShell.Common; using Amazon.S3; using Amazon.S3.Model; using System.Threading; using Amazon.Runtime; namespace Amazon.PowerShell.Cmdlets.S3 { public partial class GetS3ObjectCmdlet { #region Parameter Key /// /// Key value identifying a single object in S3 to return metadata for. /// [Parameter(Position = 1, ParameterSetName = "GetSingleObject", ValueFromPipelineByPropertyName = true, Mandatory = true)] [Amazon.PowerShell.Common.AWSRequiredParameter] public System.String Key { get; set; } #endregion // try and anticipate all the ways a user might mean 'get everything from root' readonly string[] rootIndicators = new string[] { "/", @"\", "*", "/*", @"\*" }; protected override void PostExecutionContextLoad(ExecutorContext context) { var cmdletContext = context as CmdletContext; if (this.Key != null) { this.Key = AmazonS3Helper.CleanKey(this.Key); cmdletContext.Prefix = this.Key; } else { cmdletContext.Prefix = rootIndicators.Contains(this.Prefix, StringComparer.OrdinalIgnoreCase) ? null : AmazonS3Helper.CleanKey(this.Prefix); } } protected override void ProcessOutput(CmdletOutput cmdletOutput) { if (cmdletOutput == null) return; if (this.Key != null && cmdletOutput.PipelineOutput is System.Collections.Generic.List objects) { cmdletOutput.PipelineOutput = objects.Where(b => b.Key == this.Key).ToList(); } base.ProcessOutput(cmdletOutput); } } }