|
16 | 16 | #include <aws/core/utils/crypto/Sha1.h> |
17 | 17 | #include <aws/core/utils/crypto/Sha256.h> |
18 | 18 | #include <smithy/interceptor/Interceptor.h> |
| 19 | +#include <aws/core/utils/memory/stl/AWSArray.h> |
19 | 20 |
|
20 | 21 | #include <iomanip> |
21 | 22 |
|
@@ -186,30 +187,30 @@ class ChecksumInterceptor : public smithy::interceptor::Interceptor { |
186 | 187 |
|
187 | 188 | void calculateAndSetChecksum(const Aws::AmazonWebServiceRequest& request, std::shared_ptr<Aws::Http::HttpRequest> httpRequest, |
188 | 189 | const Aws::String& algorithm, const Aws::String& checksumType) { |
189 | | - static const Aws::UnorderedMap<Aws::String, ChecksumHandler> algorithmMap = { |
190 | | - {"crc64nvme", |
191 | | - {[]() { return Aws::MakeShared<CRC64>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
| 190 | + static const Aws::Array<std::pair<const char*, ChecksumHandler>, 5> algorithmMap = {{ |
| 191 | + std::make_pair("crc64nvme", ChecksumHandler{ |
| 192 | + []() { return Aws::MakeShared<CRC64>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
192 | 193 | [](Aws::IOStream& stream) { return HashingUtils::Base64Encode(HashingUtils::CalculateCRC64(stream)); }, |
193 | | - Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC64}}, |
194 | | - {"crc32", |
195 | | - {[]() { return Aws::MakeShared<CRC32>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
| 194 | + Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC64}), |
| 195 | + std::make_pair("crc32", ChecksumHandler{ |
| 196 | + []() { return Aws::MakeShared<CRC32>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
196 | 197 | [](Aws::IOStream& stream) { return HashingUtils::Base64Encode(HashingUtils::CalculateCRC32(stream)); }, |
197 | | - Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC32}}, |
198 | | - {"crc32c", |
199 | | - {[]() { return Aws::MakeShared<CRC32C>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
| 198 | + Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC32}), |
| 199 | + std::make_pair("crc32c", ChecksumHandler{ |
| 200 | + []() { return Aws::MakeShared<CRC32C>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
200 | 201 | [](Aws::IOStream& stream) { return HashingUtils::Base64Encode(HashingUtils::CalculateCRC32C(stream)); }, |
201 | | - Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC32C}}, |
202 | | - {"sha256", |
203 | | - {[]() { return Aws::MakeShared<Sha256>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
| 202 | + Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC32C}), |
| 203 | + std::make_pair("sha256", ChecksumHandler{ |
| 204 | + []() { return Aws::MakeShared<Sha256>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
204 | 205 | [](Aws::IOStream& stream) { return HashingUtils::Base64Encode(HashingUtils::CalculateSHA256(stream)); }, |
205 | | - Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_SHA256}}, |
206 | | - {"sha1", |
207 | | - {[]() { return Aws::MakeShared<Sha1>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
| 206 | + Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_SHA256}), |
| 207 | + std::make_pair("sha1", ChecksumHandler{ |
| 208 | + []() { return Aws::MakeShared<Sha1>(AWS_SMITHY_CLIENT_CHECKSUM); }, |
208 | 209 | [](Aws::IOStream& stream) { return HashingUtils::Base64Encode(HashingUtils::CalculateSHA1(stream)); }, |
209 | | - Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_SHA1}} |
210 | | - }; |
| 210 | + Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_SHA1}) |
| 211 | + }}; |
211 | 212 |
|
212 | | - auto it = algorithmMap.find(algorithm); |
| 213 | + const auto it = find_if(algorithmMap.begin(), algorithmMap.end(), [&](const std::pair<const char*, ChecksumHandler> &pair) { return algorithm == pair.first; }); |
213 | 214 | if (it == algorithmMap.end()) { |
214 | 215 | AWS_LOGSTREAM_WARN(AWS_SMITHY_CLIENT_CHECKSUM, "Checksum algorithm: " << algorithm << " is not supported by SDK."); |
215 | 216 | return; |
|
0 commit comments