Exemplo n.º 1
0
        private async Task <HttpRequestMessage> PreparePutRequestAsync(byte[] byteArr, string filename)
        {
            AwsV4SignatureCalculator calculator     = new AwsV4SignatureCalculator(_secretKey, _service, _region);
            HttpRequestMessage       requestMessage = new HttpRequestMessage(HttpMethod.Put, new Uri($"{_protocol}://{_endpoint}/{_bucketName}/{_supPath}/{filename}"));

            DateTime now           = DateTime.UtcNow;
            var      dateTimeStamp = now.ToString(AwsV4SignatureCalculator.Iso8601DateTimeFormat, CultureInfo.InvariantCulture);
            var      dateStamp     = now.ToString(AwsV4SignatureCalculator.Iso8601DateFormat, CultureInfo.InvariantCulture);

            ByteArrayContent content = new ByteArrayContent(byteArr);

            requestMessage.Content = content;

            var hash = await AwsV4SignatureCalculator.GetPayloadHashAsync(requestMessage);

            string[] headers = AddStandardHeadersToRequest(requestMessage, dateTimeStamp, hash);

            string signature = await calculator.CalculateSignatureAsync(requestMessage, headers, now);

            string authHeader = GetAuthHeader(dateStamp, headers, signature);

            requestMessage.Headers.TryAddWithoutValidation("Authorization", authHeader);

            return(requestMessage);
        }