summaryrefslogtreecommitdiff
path: root/decoders/http/http_decoder_decompress.h
blob: fd82dd5400e2e5a17e39217c690b5ebf29280968 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#pragma once

#ifdef __cplusplus
extern "C"
{
#endif

#include <stddef.h>
#include "stellar/http.h"

#define HTTP_DECOMPRESS_BUFFER_SIZE (4096)

    enum http_content_encoding
    {
        HTTP_CONTENT_ENCODING_NONE = 0,
        HTTP_CONTENT_ENCODING_GZIP = 1 << 1,
        HTTP_CONTENT_ENCODING_DEFLATE = 1 << 2,
        HTTP_CONTENT_ENCODING_BR = 1 << 3,
        HTTP_CONTENT_ENCODING_UNKNOWN = 1 << 4,
    };

    struct http_content_decompress;
    enum http_content_encoding http_content_encoding_str2int(const char *content_encoding, size_t encoding_str_len);
    const char *http_content_encoding_int2str(enum http_content_encoding content_encoding);
    struct http_content_decompress *http_content_decompress_create(enum http_content_encoding encoding);
    void http_content_decompress_destroy(struct http_content_decompress *decompress);
    // return   0 : success
    // return  -1 : error
    int http_content_decompress_write(struct http_content_decompress *decompress,
                                      const char *indata, size_t indata_len,
                                      char **outdata, size_t *outdata_len);
    void http_content_decompress_ownership_borrow(struct http_content_decompress *decompress);
#ifdef __cplusplus
}
#endif