6 #include <aws/http/connection.h>
7 #include <aws/http/proxy.h>
8 #include <aws/http/request_response.h>
25 class ClientBootstrap;
30 class HttpClientConnection;
32 class HttpClientStream;
34 class HttpProxyStrategy;
44 std::function<void(const std::shared_ptr<HttpClientConnection> &connection,
int errorCode)>;
66 enum aws_http_header_block headerBlock,
68 std::size_t headersCount)>;
77 std::function<void(HttpStream &stream, enum aws_http_header_block block)>;
85 using OnIncomingBody = std::function<void(HttpStream &stream, const ByteCursor &data)>;
142 bool UseManualDataWrites =
false;
166 virtual int GetResponseStatusCode()
const noexcept = 0;
177 void UpdateWindow(std::size_t incrementSize) noexcept;
182 HttpStream(
const std::shared_ptr<HttpClientConnection> &connection) noexcept;
190 static int s_onIncomingHeaders(
191 struct aws_http_stream *stream,
192 enum aws_http_header_block headerBlock,
193 const struct aws_http_header *headerArray,
195 void *userData) noexcept;
196 static int s_onIncomingHeaderBlockDone(
197 struct aws_http_stream *stream,
198 enum aws_http_header_block headerBlock,
199 void *userData) noexcept;
200 static int s_onIncomingBody(
201 struct aws_http_stream *stream,
202 const struct aws_byte_cursor *data,
203 void *userData) noexcept;
204 static void s_onStreamComplete(
struct aws_http_stream *stream,
int errorCode,
void *userData) noexcept;
234 virtual int GetResponseStatusCode()
const noexcept
override;
241 bool Activate() noexcept;
244 std::shared_ptr<Aws::Crt::Io::InputStream> stream,
246 bool endStream =
false) noexcept;
249 HttpClientStream(
const std::shared_ptr<HttpClientConnection> &connection) noexcept;
280 Legacy = AWS_HPCT_HTTP_LEGACY,
318 void InitializeRawProxyOptions(
struct aws_http_proxy_options &raw_options)
const;
416 void InitializeRawProxyOptions(
struct proxy_env_var_settings &raw_options)
const;
521 Unknown = AWS_HTTP_VERSION_UNKNOWN,
522 Http1_0 = AWS_HTTP_VERSION_1_0,
523 Http1_1 = AWS_HTTP_VERSION_1_1,
524 Http2 = AWS_HTTP_VERSION_2,
551 std::shared_ptr<HttpClientStream> NewClientStream(
const HttpRequestOptions &requestOptions) noexcept;
556 bool IsOpen()
const noexcept;
565 void Close() noexcept;
585 static bool CreateConnection(
597 static void s_onClientConnectionSetup(
598 struct aws_http_connection *connection,
600 void *user_data) noexcept;
601 static void s_onClientConnectionShutdown(
602 struct aws_http_connection *connection,
604 void *user_data) noexcept;
String HostName
Definition: HttpConnection.h:483
String HostName
Definition: HttpConnection.h:324
OnIncomingHeadersBlockDone onIncomingHeadersBlockDone
Definition: HttpConnection.h:111
aws_http_stream * m_stream
Definition: HttpConnection.h:180
#define AWS_CRT_CPP_API
Definition: Exports.h:36
HttpRequest * request
Definition: HttpConnection.h:105
OnIncomingHeaders onIncomingHeaders
Definition: HttpConnection.h:110
std::shared_ptr< HttpStream > stream
Definition: HttpConnection.h:213
Definition: HttpConnection.h:100
OnConnectionShutdown OnConnectionShutdownCallback
Definition: HttpConnection.h:477
AwsHttpProxyConnectionType ProxyConnectionType
Definition: HttpConnection.h:341
Definition: HttpConnection.h:221
String BasicAuthUsername
Definition: HttpConnection.h:363
std::function< void(HttpClientConnection &connection, int errorCode)> OnConnectionShutdown
Definition: HttpConnection.h:54
String BasicAuthPassword
Definition: HttpConnection.h:369
std::basic_string< char, std::char_traits< char >, StlAllocator< char >> String
Definition: Types.h:45
std::shared_ptr< HttpProxyStrategy > ProxyStrategy
Definition: HttpConnection.h:347
bool ManualWindowManagement
Definition: HttpConnection.h:516
aws_allocator Allocator
Definition: Allocator.h:14
uint32_t Port
Definition: HttpConnection.h:489
Definition: HttpRequestResponse.h:109
Definition: HttpConnection.h:209
Definition: HttpConnection.h:298
Allocator * allocator
Definition: HttpConnection.h:212
Definition: HttpConnection.h:530
Optional< HttpClientConnectionProxyOptions > ProxyOptions
Definition: HttpConnection.h:507
std::function< void(std::shared_ptr< HttpStream > &stream, int errorCode)> OnWriteDataComplete
Definition: HttpConnection.h:216
AwsHttpProxyAuthenticationType AuthType
Definition: HttpConnection.h:357
Optional< Io::TlsConnectionOptions > TlsOptions
Definition: HttpConnection.h:336
Optional< Io::TlsConnectionOptions > TlsOptions
Definition: HttpConnection.h:435
size_t InitialWindowSize
Definition: HttpConnection.h:463
ProxyEnvVarType
Definition: HttpConnection.h:375
Definition: HttpConnection.h:441
AwsHttpProxyAuthenticationType
Definition: HttpConnection.h:261
std::function< void(HttpStream &stream, const ByteCursor &data)> OnIncomingBody
Definition: HttpConnection.h:85
std::function< void(HttpStream &stream, int errorCode)> OnStreamComplete
Definition: HttpConnection.h:95
ClientStreamCallbackData()
Definition: HttpConnection.h:211
Definition: Bootstrap.h:34
Io::ClientBootstrap * Bootstrap
Definition: HttpConnection.h:458
Definition: HttpConnection.h:149
std::function< void(const std::shared_ptr< HttpClientConnection > &connection, int errorCode)> OnConnectionSetup
Definition: HttpConnection.h:44
aws_http_header HttpHeader
Definition: HttpConnection.h:35
Io::SocketOptions SocketOptions
Definition: HttpConnection.h:495
AwsHttpProxyConnectionType connectionType
Definition: HttpConnection.h:429
std::function< void(HttpStream &stream, enum aws_http_header_block headerBlock, const HttpHeader *headersArray, std::size_t headersCount)> OnIncomingHeaders
Definition: HttpConnection.h:68
std::shared_ptr< HttpClientConnection > m_connection
Definition: HttpConnection.h:181
std::function< void(HttpStream &stream, enum aws_http_header_block block)> OnIncomingHeadersBlockDone
Definition: HttpConnection.h:77
OnStreamComplete onStreamComplete
Definition: HttpConnection.h:121
aws_http_connection * m_connection
Definition: HttpConnection.h:591
Definition: HttpConnection.h:396
HttpVersion
Definition: HttpConnection.h:519
int LastError() const noexcept
Definition: HttpConnection.h:575
OnIncomingBody onIncomingBody
Definition: HttpConnection.h:116
AwsHttpProxyConnectionType
Definition: HttpConnection.h:271
uint32_t Port
Definition: HttpConnection.h:330
OnConnectionSetup OnConnectionSetupCallback
Definition: HttpConnection.h:470
ProxyEnvVarType proxyEnvVarType
Definition: HttpConnection.h:421
Definition: SocketOptions.h:47
Definition: Allocator.h:10
Optional< Io::TlsConnectionOptions > TlsOptions
Definition: HttpConnection.h:501