/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #include <aws/s3/model/SelectObjectContentRequest.h> #include <aws/core/utils/xml/XmlSerializer.h> #include <aws/core/utils/memory/stl/AWSStringStream.h> #include <aws/core/http/URI.h> #include <aws/core/utils/memory/stl/AWSStringStream.h> #include <utility> using namespace Aws::S3::Model; using namespace Aws::Utils::Xml; using namespace Aws::Utils; using namespace Aws::Http; SelectObjectContentRequest::SelectObjectContentRequest() : m_bucketHasBeenSet(false), m_keyHasBeenSet(false), m_sSECustomerAlgorithmHasBeenSet(false), m_sSECustomerKeyHasBeenSet(false), m_sSECustomerKeyMD5HasBeenSet(false), m_expressionHasBeenSet(false), m_expressionType(ExpressionType::NOT_SET), m_expressionTypeHasBeenSet(false), m_requestProgressHasBeenSet(false), m_inputSerializationHasBeenSet(false), m_outputSerializationHasBeenSet(false), m_scanRangeHasBeenSet(false), m_expectedBucketOwnerHasBeenSet(false), m_customizedAccessLogTagHasBeenSet(false), m_handler(), m_decoder(Aws::Utils::Event::EventStreamDecoder(&m_handler)) { } Aws::String SelectObjectContentRequest::SerializePayload() const { XmlDocument payloadDoc = XmlDocument::CreateWithRootNode("SelectObjectContentRequest"); XmlNode parentNode = payloadDoc.GetRootElement(); parentNode.SetAttributeValue("xmlns", "http://s3.amazonaws.com/doc/2006-03-01/"); Aws::StringStream ss; if(m_expressionHasBeenSet) { XmlNode expressionNode = parentNode.CreateChildElement("Expression"); expressionNode.SetText(m_expression); } if(m_expressionTypeHasBeenSet) { XmlNode expressionTypeNode = parentNode.CreateChildElement("ExpressionType"); expressionTypeNode.SetText(ExpressionTypeMapper::GetNameForExpressionType(m_expressionType)); } if(m_requestProgressHasBeenSet) { XmlNode requestProgressNode = parentNode.CreateChildElement("RequestProgress"); m_requestProgress.AddToNode(requestProgressNode); } if(m_inputSerializationHasBeenSet) { XmlNode inputSerializationNode = parentNode.CreateChildElement("InputSerialization"); m_inputSerialization.AddToNode(inputSerializationNode); } if(m_outputSerializationHasBeenSet) { XmlNode outputSerializationNode = parentNode.CreateChildElement("OutputSerialization"); m_outputSerialization.AddToNode(outputSerializationNode); } if(m_scanRangeHasBeenSet) { XmlNode scanRangeNode = parentNode.CreateChildElement("ScanRange"); m_scanRange.AddToNode(scanRangeNode); } return payloadDoc.ConvertToString(); } void SelectObjectContentRequest::AddQueryStringParameters(URI& uri) const { Aws::StringStream ss; if(!m_customizedAccessLogTag.empty()) { // only accept customized LogTag which starts with "x-" Aws::Map<Aws::String, Aws::String> collectedLogTags; for(const auto& entry: m_customizedAccessLogTag) { if (!entry.first.empty() && !entry.second.empty() && entry.first.substr(0, 2) == "x-") { collectedLogTags.emplace(entry.first, entry.second); } } if (!collectedLogTags.empty()) { uri.AddQueryStringParameter(collectedLogTags); } } } Aws::Http::HeaderValueCollection SelectObjectContentRequest::GetRequestSpecificHeaders() const { Aws::Http::HeaderValueCollection headers; Aws::StringStream ss; if(m_sSECustomerAlgorithmHasBeenSet) { ss << m_sSECustomerAlgorithm; headers.emplace("x-amz-server-side-encryption-customer-algorithm", ss.str()); ss.str(""); } if(m_sSECustomerKeyHasBeenSet) { ss << m_sSECustomerKey; headers.emplace("x-amz-server-side-encryption-customer-key", ss.str()); ss.str(""); } if(m_sSECustomerKeyMD5HasBeenSet) { ss << m_sSECustomerKeyMD5; headers.emplace("x-amz-server-side-encryption-customer-key-md5", ss.str()); ss.str(""); } if(m_expectedBucketOwnerHasBeenSet) { ss << m_expectedBucketOwner; headers.emplace("x-amz-expected-bucket-owner", ss.str()); ss.str(""); } return headers; } SelectObjectContentRequest::EndpointParameters SelectObjectContentRequest::GetEndpointContextParams() const { EndpointParameters parameters; // Operation context parameters if (BucketHasBeenSet()) { parameters.emplace_back(Aws::String("Bucket"), this->GetBucket(), Aws::Endpoint::EndpointParameter::ParameterOrigin::OPERATION_CONTEXT); } return parameters; }