in src/http_message.c [118:152]
void aws_crt_http_message_to_blob(const aws_crt_http_message *message, aws_crt_buf *out_blob) {
aws_crt_http_message *mutable_message = (aws_crt_http_message *)message;
struct aws_byte_cursor method;
aws_http_message_get_request_method(message->message, &method);
struct aws_byte_cursor path;
aws_http_message_get_request_path(message->message, &path);
struct aws_http_headers *http_headers = aws_http_message_get_headers(message->message);
aws_crt_buf header_buf;
aws_crt_http_headers headers = {
.headers = http_headers,
};
aws_crt_http_headers_to_blob(&headers, &header_buf);
struct aws_byte_cursor header_blob = {
.ptr = header_buf.blob,
.len = header_buf.length,
};
aws_byte_buf_clean_up(&mutable_message->encoded_message);
aws_byte_buf_init(
&mutable_message->encoded_message,
aws_crt_default_allocator(),
sizeof(uint32_t) + sizeof(uint32_t) + method.len + path.len + header_blob.len);
aws_byte_buf_write_be32(&mutable_message->encoded_message, (uint32_t)method.len);
aws_byte_buf_write_from_whole_cursor(&mutable_message->encoded_message, method);
aws_byte_buf_write_be32(&mutable_message->encoded_message, (uint32_t)path.len);
aws_byte_buf_write_from_whole_cursor(&mutable_message->encoded_message, path);
aws_byte_buf_write_from_whole_cursor(&mutable_message->encoded_message, header_blob);
out_blob->blob = message->encoded_message.buffer;
out_blob->length = message->encoded_message.len;
}