AWS SDK for C++

AWS SDK for C++ Version 1.11.911

Loading...
Searching...
No Matches
AmazonWebServiceRequest.h
1
6#pragma once
7
8#include <aws/core/Core_EXPORTS.h>
9
10#include <aws/core/client/RequestCompression.h>
11#include <aws/core/client/UserAgent.h>
12#include <aws/core/auth/AWSAuthSigner.h>
13#include <aws/core/client/CoreErrors.h>
14#include <aws/core/endpoint/EndpointParameter.h>
15#include <aws/core/http/HttpRequest.h>
16#include <aws/core/http/HttpTypes.h>
17#include <aws/core/utils/UnreferencedParam.h>
18#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
19#include <aws/core/utils/memory/stl/AWSString.h>
20#include <aws/core/utils/stream/ResponseStream.h>
21#include <aws/core/endpoint/internal/AWSEndpointAttribute.h>
22#include <smithy/identity/auth/AuthSchemeOption.h>
23
24namespace Aws
25{
26 namespace Http
27 {
28 class URI;
29 } // namespace Http
30
32
36 typedef std::function<void(const AmazonWebServiceRequest&)> RequestRetryHandler;
37 typedef std::function<void(const Aws::Http::HttpRequest&)> RequestSignedHandler;
38
39 struct RetryContext {
40 std::shared_ptr<std::pair<Aws::String, std::shared_ptr<Aws::Utils::Crypto::Hash>>> m_requestHash;
41 };
42
46 class AWS_CORE_API AmazonWebServiceRequest
47 {
48 public:
53 virtual ~AmazonWebServiceRequest() = default;
54
58 virtual std::shared_ptr<Aws::IOStream> GetBody() const = 0;
70 virtual void SetAdditionalCustomHeaderValue(const Aws::String& headerName, const Aws::String& headerValue);
71
75 virtual void AddQueryStringParameters(Aws::Http::URI& uri) const { AWS_UNREFERENCED_PARAM(uri); }
76
81 virtual void PutToPresignedUrl(Aws::Http::URI& uri) const { DumpBodyToUrl(uri); AddQueryStringParameters(uri); }
82
86 virtual bool IsStreaming() const { return false; }
87
91 inline virtual bool IsEventStreamRequest() const { return false; }
92
96 inline virtual bool HasEventStreamResponse() const { return false; }
97
101 virtual bool SignBody() const { return true; }
102
106 virtual bool HasEmbeddedError(Aws::IOStream& body, const Aws::Http::HeaderValueCollection& header) const {
107 (void) body;
108 (void) header;
109 return false;
110 }
111
115 virtual bool IsChunked() const { return false; }
116
121 virtual bool IsLongPollingOperation() const { return false; }
122
126 inline virtual void SetRequestSignedHandler(const RequestSignedHandler& handler) { m_onRequestSigned = handler; }
130 inline virtual const RequestSignedHandler& GetRequestSignedHandler() const { return m_onRequestSigned; }
131
135 const Aws::IOStreamFactory& GetResponseStreamFactory() const { return m_responseStreamFactory; }
139 void SetResponseStreamFactory(const Aws::IOStreamFactory& factory) { m_responseStreamFactory = factory; }
140
142
145 inline virtual void SetHeadersReceivedEventHandler(const Aws::Http::HeadersReceivedEventHandler& headersReceivedEventHandler) { m_onHeadersReceived = headersReceivedEventHandler; }
146 inline virtual void SetHeadersReceivedEventHandler(Aws::Http::HeadersReceivedEventHandler&& headersReceivedEventHandler) { m_onHeadersReceived = std::move(headersReceivedEventHandler); }
148
150
153 inline virtual void SetDataReceivedEventHandler(const Aws::Http::DataReceivedEventHandler& dataReceivedEventHandler) { m_onDataReceived = dataReceivedEventHandler; }
154 inline virtual void SetDataReceivedEventHandler(Aws::Http::DataReceivedEventHandler&& dataReceivedEventHandler) { m_onDataReceived = std::move(dataReceivedEventHandler); }
156
158
161 inline virtual void SetDataSentEventHandler(const Aws::Http::DataSentEventHandler& dataSentEventHandler) { m_onDataSent = dataSentEventHandler; }
162 inline virtual void SetDataSentEventHandler(Aws::Http::DataSentEventHandler&& dataSentEventHandler) { m_onDataSent = std::move(dataSentEventHandler); }
164
166
169 inline virtual void SetContinueRequestHandler(const Aws::Http::ContinueRequestHandler& continueRequestHandler) { m_continueRequest = continueRequestHandler; }
170 inline virtual void SetContinueRequestHandler(Aws::Http::ContinueRequestHandler&& continueRequestHandler) { m_continueRequest = std::move(continueRequestHandler); }
172
174
177 inline virtual void SetRequestRetryHandler(const RequestRetryHandler& handler) { m_requestRetryHandler = handler; }
178 inline virtual void SetRequestRetryHandler(RequestRetryHandler&& handler) { m_requestRetryHandler = std::move(handler); }
180
184 inline virtual const Aws::Http::HeadersReceivedEventHandler& GetHeadersReceivedEventHandler() const { return m_onHeadersReceived; }
188 inline virtual const Aws::Http::DataReceivedEventHandler& GetDataReceivedEventHandler() const { return m_onDataReceived; }
192 inline virtual const Aws::Http::DataSentEventHandler& GetDataSentEventHandler() const { return m_onDataSent; }
196 inline virtual const Aws::Http::ContinueRequestHandler& GetContinueRequestHandler() const { return m_continueRequest; }
200 inline virtual const RequestRetryHandler& GetRequestRetryHandler() const { return m_requestRetryHandler; }
204 inline virtual bool ShouldComputeContentMd5() const { return false; }
205
206 inline virtual bool ShouldValidateResponseChecksum() const { return false; }
207
209
210 inline virtual Aws::String GetChecksumAlgorithmName() const { return {}; }
211
212 virtual const char* GetServiceRequestName() const = 0;
213
214 inline virtual void SetServiceSpecificParameters(const std::shared_ptr<Http::ServiceSpecificParameters>& serviceSpecificParameters) const { m_serviceSpecificParameters = serviceSpecificParameters; };
215
216 inline virtual std::shared_ptr<Http::ServiceSpecificParameters> GetServiceSpecificParameters() const { return m_serviceSpecificParameters; };
217
220
223
228 void AddUserAgentFeature(Aws::Client::UserAgentFeature feature) const { m_userAgentFeatures.insert(feature); }
229
234 Aws::Set<Aws::Client::UserAgentFeature> GetUserAgentFeatures() const { return m_userAgentFeatures; }
235
236 inline virtual bool RequestChecksumRequired() const { return false; }
237
238 RetryContext GetRetryContext() const { return m_retryContext; }
239
240 void SetRetryContext(const RetryContext& context) const { m_retryContext = context; }
241
243
250 inline virtual bool ChecksumAlgorithmIsSet() const { return false; }
251 protected:
256 virtual void DumpBodyToUrl(Aws::Http::URI& uri) const { AWS_UNREFERENCED_PARAM(uri); }
257
259 private:
260 Aws::IOStreamFactory m_responseStreamFactory;
261
262 Aws::Http::HeadersReceivedEventHandler m_onHeadersReceived;
265 Aws::Http::ContinueRequestHandler m_continueRequest;
266 RequestSignedHandler m_onRequestSigned;
267 RequestRetryHandler m_requestRetryHandler;
268 mutable std::shared_ptr<Aws::Http::ServiceSpecificParameters> m_serviceSpecificParameters;
269 mutable Aws::Set<Client::UserAgentFeature> m_userAgentFeatures;
270 mutable Aws::RetryContext m_retryContext;
271 };
272
273} // namespace Aws
274
virtual void SetContinueRequestHandler(Aws::Http::ContinueRequestHandler &&continueRequestHandler)
virtual bool ShouldValidateResponseChecksum() const
virtual const Aws::Http::HeaderValueCollection & GetAdditionalCustomHeaders() const
virtual bool ChecksumAlgorithmIsSet() const
virtual void DumpBodyToUrl(Aws::Http::URI &uri) const
virtual void SetContinueRequestHandler(const Aws::Http::ContinueRequestHandler &continueRequestHandler)
virtual std::shared_ptr< Aws::IOStream > GetBody() const =0
virtual void PutToPresignedUrl(Aws::Http::URI &uri) const
Aws::Vector< Aws::Endpoint::EndpointParameter > EndpointParameters
virtual bool IsEventStreamRequest() const
virtual Aws::String GetChecksumAlgorithmName() const
virtual void SetDataReceivedEventHandler(const Aws::Http::DataReceivedEventHandler &dataReceivedEventHandler)
virtual const Aws::Http::DataSentEventHandler & GetDataSentEventHandler() const
virtual void SetHeadersReceivedEventHandler(Aws::Http::HeadersReceivedEventHandler &&headersReceivedEventHandler)
virtual const RequestSignedHandler & GetRequestSignedHandler() const
virtual void SetDataReceivedEventHandler(Aws::Http::DataReceivedEventHandler &&dataReceivedEventHandler)
virtual void AddQueryStringParameters(Aws::Http::URI &uri) const
const Aws::IOStreamFactory & GetResponseStreamFactory() const
virtual Aws::Vector< smithy::AuthSchemeOption > GetRequestSpecificSupportedAuth() const
virtual bool ShouldComputeContentMd5() const
virtual EndpointParameters GetEndpointContextParams() const
void SetRetryContext(const RetryContext &context) const
virtual void SetAdditionalCustomHeaderValue(const Aws::String &headerName, const Aws::String &headerValue)
void AddUserAgentFeature(Aws::Client::UserAgentFeature feature) const
virtual Aws::Client::CompressionAlgorithm GetSelectedCompressionAlgorithm(Aws::Client::RequestCompressionConfig) const
virtual void SetHeadersReceivedEventHandler(const Aws::Http::HeadersReceivedEventHandler &headersReceivedEventHandler)
virtual const Aws::Http::HeadersReceivedEventHandler & GetHeadersReceivedEventHandler() const
virtual ~AmazonWebServiceRequest()=default
void SetResponseStreamFactory(const Aws::IOStreamFactory &factory)
virtual void SetDataSentEventHandler(Aws::Http::DataSentEventHandler &&dataSentEventHandler)
virtual Aws::Http::HeaderValueCollection GetHeaders() const =0
Aws::Set< Aws::Client::UserAgentFeature > GetUserAgentFeatures() const
virtual void SetServiceSpecificParameters(const std::shared_ptr< Http::ServiceSpecificParameters > &serviceSpecificParameters) const
virtual const Aws::Http::ContinueRequestHandler & GetContinueRequestHandler() const
virtual const RequestRetryHandler & GetRequestRetryHandler() const
virtual const char * GetServiceRequestName() const =0
virtual const Aws::Http::DataReceivedEventHandler & GetDataReceivedEventHandler() const
virtual std::shared_ptr< Http::ServiceSpecificParameters > GetServiceSpecificParameters() const
virtual bool HasEventStreamResponse() const
virtual Aws::Vector< Aws::String > GetResponseChecksumAlgorithmNames() const
virtual void SetRequestSignedHandler(const RequestSignedHandler &handler)
virtual bool HasEmbeddedError(Aws::IOStream &body, const Aws::Http::HeaderValueCollection &header) const
Aws::Http::HeaderValueCollection m_additionalCustomHeaders
virtual bool RequestChecksumRequired() const
virtual bool IsLongPollingOperation() const
virtual void SetRequestRetryHandler(const RequestRetryHandler &handler)
virtual void SetRequestRetryHandler(RequestRetryHandler &&handler)
virtual void SetDataSentEventHandler(const Aws::Http::DataSentEventHandler &dataSentEventHandler)
std::function< void(const HttpRequest *, HttpResponse *)> HeadersReceivedEventHandler
Definition HttpRequest.h:79
std::function< void(const HttpRequest *, HttpResponse *, long long)> DataReceivedEventHandler
Definition HttpRequest.h:83
std::function< void(const HttpRequest *, long long)> DataSentEventHandler
Definition HttpRequest.h:87
std::function< bool(const HttpRequest *)> ContinueRequestHandler
Definition HttpRequest.h:91
Aws::Map< Aws::String, Aws::String > HeaderValueCollection
Definition HttpTypes.h:56
std::function< void(const AmazonWebServiceRequest &)> RequestRetryHandler
std::basic_iostream< char, std::char_traits< char > > IOStream
std::function< Aws::IOStream *(void) > IOStreamFactory
std::function< void(const Aws::Http::HttpRequest &)> RequestSignedHandler
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
Definition AWSString.h:97
std::set< T, std::less< T >, Aws::Allocator< T > > Set
Definition AWSSet.h:18
std::vector< T, Aws::Allocator< T > > Vector
Definition AWSVector.h:17
std::shared_ptr< std::pair< Aws::String, std::shared_ptr< Aws::Utils::Crypto::Hash > > > m_requestHash