public void WriteContextMembers(IndentedTextWriter writer, string contextVar, SimplePropertyInfo spi, Param paramCustomization)
        {
            string contextMember = string.Format("{0}.{1}", contextVar, spi.CmdletParameterName);

            writer.WriteLine("if (this.StandardStorage.IsPresent)");
            writer.OpenRegion();
            {
                writer.WriteLine("{0} = S3StorageClass.Standard;", contextMember);
            }
            writer.CloseRegion();
            writer.WriteLine("else if (this.ReducedRedundancyStorage.IsPresent)");
            writer.OpenRegion();
            {
                writer.WriteLine("{0} = S3StorageClass.ReducedRedundancy;", contextMember);
            }
            writer.CloseRegion();
            writer.WriteLine();
        }
예제 #2
0
        public void WriteContextMembers(IndentedTextWriter writer, string contextVar, SimplePropertyInfo spi, Param paramCustomization)
        {
            var contextMember = string.Format("{0}.{1}", contextVar, spi.CmdletParameterName);

            writer.WriteLine("if (this.{0} != null)", spi.CmdletParameterName);
            writer.OpenRegion();
            writer.WriteLine("{0} = AmazonEC2Helper.InstanceParamToIDs(this.{1});", contextMember, spi.CmdletParameterName);
            writer.CloseRegion();
            writer.WriteLine();
        }
        public void WriteContextMembers(IndentedTextWriter writer, string contextVar, SimplePropertyInfo spi, Param paramCustomization)
        {
            string contextMember = string.Format("{0}.{1}", contextVar, spi.CmdletParameterName);

            writer.WriteLine("if (!string.IsNullOrEmpty(this.{0}))", spi.CmdletParameterName);
            writer.OpenRegion();
            {
                writer.WriteLine("try");
                writer.OpenRegion();
                {
                    writer.WriteLine("{0} = (HttpVerb)Enum.Parse(typeof(HttpVerb), this.{1}, true);", contextMember, spi.CmdletParameterName);
                }
                writer.CloseRegion();
                writer.WriteLine("catch (ArgumentException e)");
                writer.OpenRegion();
                {
                    writer.WriteLine("string errMsg = \"Invalid parameter value; allowable values: \" + string.Join(\", \", Enum.GetNames(typeof(HttpVerb)));");
                    writer.WriteLine("this.ThrowArgumentError(errMsg, this.{0}, e);", spi.CmdletParameterName);
                }
                writer.CloseRegion();
            }
            writer.CloseRegion();
            writer.WriteLine();
        }
        /// <summary>
        /// Generate the source file for the abstract base 'client' class that the service operation cmdlets will
        /// derive from, supplying them with the service client and default region handling, if any.
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="serviceConfig"></param>
        /// <param name="clientName"></param>
        /// <param name="serviceApiVersion"></param>
        public static void Write(IndentedTextWriter writer, ConfigModel serviceConfig, string clientName, string serviceApiVersion)
        {
            WriteSourceLicenseHeader(writer);
            WriteNamespaces(writer, serviceConfig.ServiceNamespace);
            writer.WriteLine();

            var prefix = serviceConfig.ServiceNounPrefix;

            writer.WriteLine("namespace Amazon.PowerShell.Cmdlets.{0}", prefix);
            writer.OpenRegion();
            {
                WriteServiceCmdletClass(writer, serviceConfig, clientName, prefix, serviceApiVersion, false);

                if (serviceConfig.RequiresAnonymousServiceCmdletClass)
                {
                    writer.WriteLine();
                    WriteServiceCmdletClass(writer, serviceConfig, clientName, prefix, serviceApiVersion, true);
                }
            }
            writer.CloseRegion();
        }
        private static void WriteServiceCmdletClass(IndentedTextWriter writer,
                                                    ConfigModel serviceConfig,
                                                    string clientName,
                                                    string prefix,
                                                    string serviceApiVersion,
                                                    bool useAnonymousServiceCmdletBase)
        {
            var serviceCmdletBaseClass = useAnonymousServiceCmdletBase ? AnonymousServiceCmdletBaseClassName : AuthenticatedServiceCmdletBaseClassName;
            var serviceCmdletClass     = serviceConfig.GetServiceCmdletClassName(useAnonymousServiceCmdletBase);

            writer.WriteLine("[AWSClientCmdlet(\"{0}\", \"{1}\", \"{2}\", \"{3}\")]", clientName, prefix, serviceApiVersion, serviceConfig.AssemblyName);
            writer.WriteLine("public abstract partial class {0}Cmdlet : {1}", serviceCmdletClass, serviceCmdletBaseClass);
            writer.OpenRegion();
            {
                writer.WriteLine("protected {0} Client {{ get; private set; }}", serviceConfig.ServiceClientInterface);
                if (!string.IsNullOrEmpty(serviceConfig.DefaultRegion))
                {
                    writer.WriteLine("protected override string _DefaultRegion");
                    writer.OpenRegion();
                    {
                        writer.WriteLine("get");
                        writer.OpenRegion();
                        {
                            writer.WriteLine("return \"{0}\";", serviceConfig.DefaultRegion);
                        }
                        writer.CloseRegion();
                    }
                    writer.CloseRegion();
                }

                if (useAnonymousServiceCmdletBase)
                {
                    writer.WriteLine("protected {0} CreateClient(RegionEndpoint region)", serviceConfig.ServiceClientInterface);
                }
                else
                {
                    writer.WriteLine("protected {0} CreateClient(AWSCredentials credentials, RegionEndpoint region)", serviceConfig.ServiceClientInterface);
                }

                writer.OpenRegion();
                {
                    writer.WriteLine("var config = new {0} {{ RegionEndpoint = region }};", serviceConfig.ServiceClientConfig);
                    writer.WriteLine("Amazon.PowerShell.Utils.Common.PopulateConfig(this, config);");
                    writer.WriteLine("this.CustomizeClientConfig(config);");

                    if (useAnonymousServiceCmdletBase)
                    {
                        writer.WriteLine("var client = new {0}(new AnonymousAWSCredentials(), config);", serviceConfig.ServiceClient);
                    }
                    else
                    {
                        writer.WriteLine("var client = new {0}(credentials, config);", serviceConfig.ServiceClient);
                    }

                    writer.WriteLine("client.BeforeRequestEvent += RequestEventHandler;");
                    writer.WriteLine("client.AfterResponseEvent += ResponseEventHandler;");
                    writer.WriteLine("return client;");
                }
                writer.CloseRegion();
                writer.WriteLine();
                writer.WriteLine("protected override void ProcessRecord()");
                writer.OpenRegion();
                {
                    writer.WriteLine("base.ProcessRecord();");
                    writer.WriteLine();
                    if (useAnonymousServiceCmdletBase)
                    {
                        writer.WriteLine("Client = CreateClient(_RegionEndpoint);");
                    }
                    else
                    {
                        writer.WriteLine("Client = CreateClient(_CurrentCredentials, _RegionEndpoint);");
                    }
                }
                writer.CloseRegion();
            }
            writer.CloseRegion();
        }