void aws_crt_http_headers_to_blob()

in src/http_message.c [56:75]


void aws_crt_http_headers_to_blob(const aws_crt_http_headers *headers, aws_crt_buf *out_blob) {
    aws_crt_http_headers *mutable_headers = (aws_crt_http_headers *)headers;
    aws_byte_buf_clean_up(&mutable_headers->encoded_headers);
    aws_byte_buf_init(&mutable_headers->encoded_headers, aws_crt_default_allocator(), 256);
    const size_t header_count = aws_http_headers_count(headers->headers);
    for (size_t idx = 0; idx < header_count; ++idx) {
        struct aws_http_header header;
        aws_http_headers_get_index(headers->headers, idx, &header);
        aws_byte_buf_reserve_relative(
            &mutable_headers->encoded_headers,
            sizeof(uint32_t) + sizeof(uint32_t) + header.name.len + header.value.len);

        aws_byte_buf_write_be32(&mutable_headers->encoded_headers, (uint32_t)header.name.len);
        aws_byte_buf_write_from_whole_cursor(&mutable_headers->encoded_headers, header.name);
        aws_byte_buf_write_be32(&mutable_headers->encoded_headers, (uint32_t)header.value.len);
        aws_byte_buf_write_from_whole_cursor(&mutable_headers->encoded_headers, header.value);
    }
    out_blob->blob = headers->encoded_headers.buffer;
    out_blob->length = headers->encoded_headers.len;
}