| |
| |
| |
| |
|
|
| #pragma once |
|
|
| #include <aws/core/Core_EXPORTS.h> |
|
|
| #include <aws/core/client/RequestCompression.h> |
| #include <aws/core/client/UserAgent.h> |
| #include <aws/core/auth/AWSAuthSigner.h> |
| #include <aws/core/client/CoreErrors.h> |
| #include <aws/core/endpoint/EndpointParameter.h> |
| #include <aws/core/http/HttpRequest.h> |
| #include <aws/core/http/HttpTypes.h> |
| #include <aws/core/utils/UnreferencedParam.h> |
| #include <aws/core/utils/memory/stl/AWSStreamFwd.h> |
| #include <aws/core/utils/memory/stl/AWSString.h> |
| #include <aws/core/utils/stream/ResponseStream.h> |
| #include <aws/core/endpoint/internal/AWSEndpointAttribute.h> |
|
|
| namespace Aws |
| { |
| namespace Http |
| { |
| class URI; |
| } |
|
|
| class AmazonWebServiceRequest; |
|
|
| |
| |
| |
| typedef std::function<void(const AmazonWebServiceRequest&)> RequestRetryHandler; |
| typedef std::function<void(const Aws::Http::HttpRequest&)> RequestSignedHandler; |
|
|
| |
| |
| |
| class AWS_CORE_API AmazonWebServiceRequest |
| { |
| public: |
| |
| |
| |
| AmazonWebServiceRequest(); |
| virtual ~AmazonWebServiceRequest() = default; |
|
|
| |
| |
| |
| virtual std::shared_ptr<Aws::IOStream> GetBody() const = 0; |
| |
| |
| |
| virtual Aws::Http::HeaderValueCollection GetHeaders() const = 0; |
| |
| |
| |
| virtual const Aws::Http::HeaderValueCollection& GetAdditionalCustomHeaders() const; |
| |
| |
| |
| virtual void SetAdditionalCustomHeaderValue(const Aws::String& headerName, const Aws::String& headerValue); |
|
|
| |
| |
| |
| virtual void AddQueryStringParameters(Aws::Http::URI& uri) const { AWS_UNREFERENCED_PARAM(uri); } |
|
|
| |
| |
| |
| |
| virtual void PutToPresignedUrl(Aws::Http::URI& uri) const { DumpBodyToUrl(uri); AddQueryStringParameters(uri); } |
|
|
| |
| |
| |
| virtual bool IsStreaming() const { return false; } |
|
|
| |
| |
| |
| inline virtual bool IsEventStreamRequest() const { return false; } |
|
|
| |
| |
| |
| inline virtual bool HasEventStreamResponse() const { return false; } |
|
|
| |
| |
| |
| virtual bool SignBody() const { return true; } |
|
|
| |
| |
| |
| virtual bool HasEmbeddedError(Aws::IOStream& body, const Aws::Http::HeaderValueCollection& header) const { |
| (void) body; |
| (void) header; |
| return false; |
| } |
|
|
| |
| |
| |
| virtual bool IsChunked() const { return false; } |
|
|
| |
| |
| |
| inline virtual void SetRequestSignedHandler(const RequestSignedHandler& handler) { m_onRequestSigned = handler; } |
| |
| |
| |
| inline virtual const RequestSignedHandler& GetRequestSignedHandler() const { return m_onRequestSigned; } |
|
|
| |
| |
| |
| const Aws::IOStreamFactory& GetResponseStreamFactory() const { return m_responseStreamFactory; } |
| |
| |
| |
| void SetResponseStreamFactory(const Aws::IOStreamFactory& factory) { m_responseStreamFactory = factory; } |
|
|
| |
| |
| |
| |
| inline virtual void SetHeadersReceivedEventHandler(const Aws::Http::HeadersReceivedEventHandler& headersReceivedEventHandler) { m_onHeadersReceived = headersReceivedEventHandler; } |
| inline virtual void SetHeadersReceivedEventHandler(Aws::Http::HeadersReceivedEventHandler&& headersReceivedEventHandler) { m_onHeadersReceived = std::move(headersReceivedEventHandler); } |
| |
|
|
| |
| |
| |
| |
| inline virtual void SetDataReceivedEventHandler(const Aws::Http::DataReceivedEventHandler& dataReceivedEventHandler) { m_onDataReceived = dataReceivedEventHandler; } |
| inline virtual void SetDataReceivedEventHandler(Aws::Http::DataReceivedEventHandler&& dataReceivedEventHandler) { m_onDataReceived = std::move(dataReceivedEventHandler); } |
| |
|
|
| |
| |
| |
| |
| inline virtual void SetDataSentEventHandler(const Aws::Http::DataSentEventHandler& dataSentEventHandler) { m_onDataSent = dataSentEventHandler; } |
| inline virtual void SetDataSentEventHandler(Aws::Http::DataSentEventHandler&& dataSentEventHandler) { m_onDataSent = std::move(dataSentEventHandler); } |
| |
|
|
| |
| |
| |
| |
| inline virtual void SetContinueRequestHandler(const Aws::Http::ContinueRequestHandler& continueRequestHandler) { m_continueRequest = continueRequestHandler; } |
| inline virtual void SetContinueRequestHandler(Aws::Http::ContinueRequestHandler&& continueRequestHandler) { m_continueRequest = std::move(continueRequestHandler); } |
| |
|
|
| |
| |
| |
| |
| inline virtual void SetRequestRetryHandler(const RequestRetryHandler& handler) { m_requestRetryHandler = handler; } |
| inline virtual void SetRequestRetryHandler(RequestRetryHandler&& handler) { m_requestRetryHandler = std::move(handler); } |
| |
|
|
| |
| |
| |
| inline virtual const Aws::Http::HeadersReceivedEventHandler& GetHeadersReceivedEventHandler() const { return m_onHeadersReceived; } |
| |
| |
| |
| inline virtual const Aws::Http::DataReceivedEventHandler& GetDataReceivedEventHandler() const { return m_onDataReceived; } |
| |
| |
| |
| inline virtual const Aws::Http::DataSentEventHandler& GetDataSentEventHandler() const { return m_onDataSent; } |
| |
| |
| |
| inline virtual const Aws::Http::ContinueRequestHandler& GetContinueRequestHandler() const { return m_continueRequest; } |
| |
| |
| |
| inline virtual const RequestRetryHandler& GetRequestRetryHandler() const { return m_requestRetryHandler; } |
| |
| |
| |
| inline virtual bool ShouldComputeContentMd5() const { return false; } |
|
|
| inline virtual bool ShouldValidateResponseChecksum() const { return false; } |
|
|
| inline virtual Aws::Vector<Aws::String> GetResponseChecksumAlgorithmNames() const { return {}; } |
|
|
| inline virtual Aws::String GetChecksumAlgorithmName() const { return {}; } |
|
|
| virtual const char* GetServiceRequestName() const = 0; |
|
|
| inline virtual void SetServiceSpecificParameters(const std::shared_ptr<Http::ServiceSpecificParameters>& serviceSpecificParameters) const { m_serviceSpecificParameters = serviceSpecificParameters; }; |
|
|
| inline virtual std::shared_ptr<Http::ServiceSpecificParameters> GetServiceSpecificParameters() const { return m_serviceSpecificParameters; }; |
|
|
| using EndpointParameters = Aws::Vector<Aws::Endpoint::EndpointParameter>; |
| virtual EndpointParameters GetEndpointContextParams() const; |
|
|
| virtual Aws::Client::CompressionAlgorithm |
| GetSelectedCompressionAlgorithm(Aws::Client::RequestCompressionConfig) const { return Aws::Client::CompressionAlgorithm::NONE; } |
|
|
| |
| |
| |
| |
| void AddUserAgentFeature(Aws::Client::UserAgentFeature feature) const { m_userAgentFeatures.insert(feature); } |
|
|
| |
| |
| |
| |
| Aws::Set<Aws::Client::UserAgentFeature> GetUserAgentFeatures() const { return m_userAgentFeatures; } |
|
|
| inline virtual bool RequestChecksumRequired() const { return false; } |
| protected: |
| |
| |
| |
| |
| virtual void DumpBodyToUrl(Aws::Http::URI& uri) const { AWS_UNREFERENCED_PARAM(uri); } |
|
|
| Aws::Http::HeaderValueCollection m_additionalCustomHeaders; |
| private: |
| Aws::IOStreamFactory m_responseStreamFactory; |
|
|
| Aws::Http::HeadersReceivedEventHandler m_onHeadersReceived; |
| Aws::Http::DataReceivedEventHandler m_onDataReceived; |
| Aws::Http::DataSentEventHandler m_onDataSent; |
| Aws::Http::ContinueRequestHandler m_continueRequest; |
| RequestSignedHandler m_onRequestSigned; |
| RequestRetryHandler m_requestRetryHandler; |
| mutable std::shared_ptr<Aws::Http::ServiceSpecificParameters> m_serviceSpecificParameters; |
| mutable Aws::Set<Client::UserAgentFeature> m_userAgentFeatures; |
| }; |
|
|
| } |
|
|
|
|