public static DescribeCertificateResponse Unmarshall(UnmarshallerContext _ctx)
        {
            DescribeCertificateResponse describeCertificateResponse = new DescribeCertificateResponse();

            describeCertificateResponse.HttpResponse         = _ctx.HttpResponse;
            describeCertificateResponse.RequestId            = _ctx.StringValue("DescribeCertificate.RequestId");
            describeCertificateResponse.CertificateId        = _ctx.StringValue("DescribeCertificate.CertificateId");
            describeCertificateResponse.Arn                  = _ctx.StringValue("DescribeCertificate.Arn");
            describeCertificateResponse.KeySpec              = _ctx.StringValue("DescribeCertificate.KeySpec");
            describeCertificateResponse.ProtectionLevel      = _ctx.StringValue("DescribeCertificate.ProtectionLevel");
            describeCertificateResponse.Status               = _ctx.StringValue("DescribeCertificate.Status");
            describeCertificateResponse.CreatedAt            = _ctx.StringValue("DescribeCertificate.CreatedAt");
            describeCertificateResponse.UpdatedAt            = _ctx.StringValue("DescribeCertificate.UpdatedAt");
            describeCertificateResponse.Serial               = _ctx.StringValue("DescribeCertificate.Serial");
            describeCertificateResponse.Subject              = _ctx.StringValue("DescribeCertificate.Subject");
            describeCertificateResponse.Issuer               = _ctx.StringValue("DescribeCertificate.Issuer");
            describeCertificateResponse.NotBefore            = _ctx.StringValue("DescribeCertificate.NotBefore");
            describeCertificateResponse.NotAfter             = _ctx.StringValue("DescribeCertificate.NotAfter");
            describeCertificateResponse.SignatureAlgorithm   = _ctx.StringValue("DescribeCertificate.SignatureAlgorithm");
            describeCertificateResponse.SubjectPublicKey     = _ctx.StringValue("DescribeCertificate.SubjectPublicKey");
            describeCertificateResponse.SubjectKeyIdentifier = _ctx.StringValue("DescribeCertificate.SubjectKeyIdentifier");
            describeCertificateResponse.Tags                 = _ctx.StringValue("DescribeCertificate.Tags");

            List <string> describeCertificateResponse_subjectAlternativeNames = new List <string>();

            for (int i = 0; i < _ctx.Length("DescribeCertificate.SubjectAlternativeNames.Length"); i++)
            {
                describeCertificateResponse_subjectAlternativeNames.Add(_ctx.StringValue("DescribeCertificate.SubjectAlternativeNames[" + i + "]"));
            }
            describeCertificateResponse.SubjectAlternativeNames = describeCertificateResponse_subjectAlternativeNames;

            return(describeCertificateResponse);
        }
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonDocDBConfig config = new AmazonDocDBConfig();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonDocDBClient client = new AmazonDocDBClient(creds, config);

            DescribeCertificateResponse resp = new DescribeCertificateResponse();

            do
            {
                DescribeCertificatesRequest req = new DescribeCertificatesRequest
                {
                    Marker = resp.Marker
                    ,
                    MaxRecords = maxItems
                };

                resp = client.DescribeCertificates(req);
                CheckError(resp.HttpStatusCode, "200");

                foreach (var obj in resp.Certificates)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.Marker));
        }
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>  
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            DescribeCertificateResponse response = new DescribeCertificateResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;
            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("certificateDescription", targetDepth))
                {
                    var unmarshaller = CertificateDescriptionUnmarshaller.Instance;
                    response.CertificateDescription = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return response;
        }
        /// <summary>
        /// Retrieves the metadata associated with the ACM service certificate.
        /// </summary>
        /// <param name="client">An AmazonCertificateManagerClient object
        /// used to call DescribeCertificateResponse.</param>
        /// <param name="request">The DescribeCertificateRequest object that
        /// will be passed to the method call.</param>
        /// <returns></returns>
        static async Task <DescribeCertificateResponse> DescribeCertificateResponseAsync(AmazonCertificateManagerClient client, DescribeCertificateRequest request)
        {
            var response = new DescribeCertificateResponse();

            try
            {
                response = await client.DescribeCertificateAsync(request);
            }
            catch (InvalidArnException ex)
            {
                Console.WriteLine($"Error: The ARN specified is invalid.");
            }
            catch (ResourceNotFoundException ex)
            {
                Console.WriteLine($"Error: The specified certificate cound not be found.");
            }

            return(response);
        }