Amazon.Polly.SynthesizeSpeechUtil.SynthesizeSpeechPresignedUrlSigner.SignSynthesizeSpeechRequest C# (CSharp) Метод

SignSynthesizeSpeechRequest() публичный статический Метод

This method was copied from AWS4PreSignedUrlSigner.SignRequest and adapted for this utility.
public static SignSynthesizeSpeechRequest ( IRequest request, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey, string service, string region ) : AWS4SigningResult
request IRequest
metrics RequestMetrics
awsAccessKeyId string
awsSecretAccessKey string
service string
region string
Результат Amazon.Runtime.Internal.Auth.AWS4SigningResult
            public static AWS4SigningResult SignSynthesizeSpeechRequest(IRequest request,
                                         RequestMetrics metrics,
                                         string awsAccessKeyId,
                                         string awsSecretAccessKey,
                                         string service,
                                         string region)
            {
                // clean up any prior signature in the headers if resigning
                request.Headers.Remove(HeaderKeys.AuthorizationHeader);
                if (!request.Headers.ContainsKey(HeaderKeys.HostHeader))
                {
                    var hostHeader = request.Endpoint.Host;
                    if (!request.Endpoint.IsDefaultPort)
                        hostHeader += ":" + request.Endpoint.Port;
                    request.Headers.Add(HeaderKeys.HostHeader, hostHeader);
                }

                var signedAt = AWSSDKUtils.CorrectedUtcNow;

                // AWS4 presigned urls got S3 are expected to contain a 'UNSIGNED-PAYLOAD' magic string
                // during signing (other services use the empty-body sha)
                if (request.Headers.ContainsKey(HeaderKeys.XAmzContentSha256Header))
                    request.Headers.Remove(HeaderKeys.XAmzContentSha256Header);

                var sortedHeaders = SortAndPruneHeaders(request.Headers);
                var canonicalizedHeaderNames = CanonicalizeHeaderNames(sortedHeaders);

                var parametersToCanonicalize = GetParametersToCanonicalize(request);
                parametersToCanonicalize.Add(XAmzAlgorithm, AWS4AlgorithmTag);
                parametersToCanonicalize.Add(XAmzCredential,
                                             string.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}/{3}/{4}",
                                                           awsAccessKeyId,
                                                           FormatDateTime(signedAt, AWSSDKUtils.ISO8601BasicDateFormat),
                                                           region,
                                                           service,
                                                           Terminator));

                parametersToCanonicalize.Add(HeaderKeys.XAmzDateHeader, FormatDateTime(signedAt, AWSSDKUtils.ISO8601BasicDateTimeFormat));
                parametersToCanonicalize.Add(HeaderKeys.XAmzSignedHeadersHeader, canonicalizedHeaderNames);

                var canonicalQueryParams = CanonicalizeQueryParametersForSynthesizeSpeech(parametersToCanonicalize, true);

                var canonicalRequest = CanonicalizeRequest(request.Endpoint,
                                                           request.ResourcePath,
                                                           request.HttpMethod,
                                                           sortedHeaders,
                                                           canonicalQueryParams,
                                                           service == "s3" ? UnsignedPayload : EmptyBodySha256);
                if (metrics != null)
                    metrics.AddProperty(Metric.CanonicalRequest, canonicalRequest);

                return ComputeSignature(awsAccessKeyId,
                                        awsSecretAccessKey,
                                        region,
                                        signedAt,
                                        service,
                                        canonicalizedHeaderNames,
                                        canonicalRequest,
                                        metrics);
            }