TuyaOS
http_inf.h
浏览该文件的文档.
1
11#ifndef _HTTP_INF_H
12#define _HTTP_INF_H
13
14#include "tuya_cloud_types.h"
15#include "httpc.h"
16#include "log_seq.h"
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
31typedef INT_T(*HTTP_DATA_RECV)(PVOID_T hand, PVOID_T buf, UINT_T len);
32
36typedef struct {
38 BOOL_T chunked;
42 PVOID_T hand;
46 PVOID_T *pri_data;
50 CHAR_T *p_decode_key;
52
60typedef OPERATE_RET(*HTTP_INF_CB)(HTTP_INF_H_S *hand);
61
65typedef struct {
67 BYTE_T total;
69 BYTE_T cnt;
71 CHAR_T *pos[0];
73
74#define DEF_URL_LEN 1024 // max length of HTTP url
78typedef struct {
82 CHAR_T *param_in;
84 USHORT_T head_size;
86 USHORT_T buf_len;
88 CHAR_T buf[0];
90
100#define http_inf_client_get(url, callback, pri_data) \
101 http_inf_client_get_with_head(url, callback, pri_data, NULL, NULL)
102
114OPERATE_RET http_inf_client_get_with_head(IN CONST CHAR_T *url,
115 IN CONST HTTP_INF_CB callback,
116 INOUT PVOID_T *pri_data,
117 IN HTTP_HEAD_ADD_CB add_head_cb,
118 IN VOID* add_head_data);
119
131OPERATE_RET http_inf_client_get_file(IN CONST CHAR_T *url,
132 IN CONST HTTP_INF_CB callback,
133 INOUT PVOID_T *pri_data,
134 IN CONST UINT_T file_offset,
135 IN CONST UINT_T file_size);
136
137#define http_inf_client_post(url, callback, data, len, add_head_cb, add_head_data, p_decode_key, pri_data) \
138 http_inf_client_post_field(url, callback, data, len, add_head_cb, add_head_data, p_decode_key, pri_data, \
139 STANDARD_HDR_FLAGS|HDR_ADD_CONN_KEEP_ALIVE|HDR_ADD_CONTENT_TYPE_FORM_URLENCODE)
140
156OPERATE_RET http_inf_client_post_field(IN CONST CHAR_T *url,
157 IN CONST HTTP_INF_CB callback,
158 IN CONST BYTE_T *data,
159 IN CONST UINT_T len,
160 IN HTTP_HEAD_ADD_CB add_head_cb,
161 IN VOID* add_head_data,
162 IN CONST CHAR_T *p_decode_key,
163 INOUT PVOID_T *pri_data,
164 IN CONST http_hdr_field_sel_t field_flags);
165
166#define http_inf_client_post_raw(url, len, p_inf) \
167 http_inf_client_post_raw_field(url, len, p_inf, \
168 HRD_ADD_HTTP_RAW | STANDARD_HDR_FLAGS | HDR_ADD_CONN_KEEP_ALIVE | HDR_ADD_CONTENT_TYPE_JSON)
169
180OPERATE_RET http_inf_client_post_raw_field(IN CONST CHAR_T *url,
181 IN CONST UINT_T len,
182 INOUT HTTP_INF_H_S *p_inf,
183 IN http_hdr_field_sel_t field_flags);
184
195#define http_inf_client_get_raw(url, p_inf, offset, total_len) \
196 http_inf_client_get_raw_with_head(url, p_inf, offset, total_len, NULL, NULL)
197
210OPERATE_RET http_inf_client_get_raw_with_head(IN CONST CHAR_T *url,
211 INOUT HTTP_INF_H_S *p_inf,
212 IN UINT_T offset, IN UINT_T total_len,
213 IN HTTP_HEAD_ADD_CB add_head_cb,
214 IN VOID* add_head_data);
215
225#define http_inf_client_put_raw(url, len, p_inf) \
226 http_inf_client_put_raw_field(url, len, p_inf, NULL, NULL)
227
239OPERATE_RET http_inf_client_put_raw_field(IN CONST CHAR_T *url,
240 IN INT_T len,
241 INOUT HTTP_INF_H_S *p_inf,
242 IN HTTP_HEAD_ADD_CB add_head_cb,
243 IN VOID* add_head_data);
244
256 IN CONST BYTE_T *p_data,
257 IN CONST UINT_T len,
258 BOOL_T chunked);
259
267OPERATE_RET httpc_inf_read_header_raw(INOUT HTTP_INF_H_S *p_inf);
268
278INT_T httpc_inf_read_content_raw(IN HTTP_INF_H_S *p_inf, IN BYTE_T *buf, IN CONST UINT_T buf_len);
279
287OPERATE_RET http_inf_close_raw(INOUT HTTP_INF_H_S *p_inf);
288
302OPERATE_RET http_inf_client_add_head_cb_post(IN CONST char *url,
303 IN CONST HTTP_INF_CB callback,
304 IN CONST BYTE_T *data,
305 IN CONST UINT_T len,
306 IN HTTP_HEAD_ADD_CB add_head_cb,
307 IN VOID* add_head_data,
308 INOUT PVOID_T *pri_data);
309
323OPERATE_RET http_inf_client_put(IN CONST CHAR_T *url,
324 IN CONST HTTP_INF_CB callback,
325 IN CONST BYTE_T *data,
326 IN CONST UINT_T len,
327 IN HTTP_HEAD_ADD_CB add_head_cb,
328 IN VOID* add_head_data,
329 INOUT PVOID_T *pri_data);
330
343OPERATE_RET http_inf_client_put_custom_content(IN CONST CHAR_T *url,
344 IN CONST HTTP_INF_CB callback,
346 IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID* add_head_data,
347 INOUT PVOID_T *pri_data);
348
357HTTP_URL_H_S *create_http_url_h(IN CONST USHORT_T buf_len, IN CONST USHORT_T param_cnt);
358
366
375OPERATE_RET fill_url_head(INOUT HTTP_URL_H_S *hu_h, IN CONST CHAR_T *url_h);
376
386OPERATE_RET fill_url_param(INOUT HTTP_URL_H_S *hu_h, IN CONST CHAR_T *key, IN CONST CHAR_T *value);
387
388#ifdef __cplusplus
389}
390#endif
391
392#endif
OPERATE_RET http_inf_client_get_with_head(IN CONST CHAR_T *url, IN CONST HTTP_INF_CB callback, INOUT PVOID_T *pri_data, IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID *add_head_data)
This API is used to GET HTTP request/response
OPERATE_RET fill_url_param(INOUT HTTP_URL_H_S *hu_h, IN CONST CHAR_T *key, IN CONST CHAR_T *value)
Add key/value param to HTTP url
OPERATE_RET http_inf_client_get_raw_with_head(IN CONST CHAR_T *url, INOUT HTTP_INF_H_S *p_inf, IN UINT_T offset, IN UINT_T total_len, IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID *add_head_data)
This API is used to GET raw HTTP request/response
OPERATE_RET http_inf_client_add_head_cb_post(IN CONST char *url, IN CONST HTTP_INF_CB callback, IN CONST BYTE_T *data, IN CONST UINT_T len, IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID *add_head_data, INOUT PVOID_T *pri_data)
This API is used to POST HTTP request/response
OPERATE_RET http_inf_client_put(IN CONST CHAR_T *url, IN CONST HTTP_INF_CB callback, IN CONST BYTE_T *data, IN CONST UINT_T len, IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID *add_head_data, INOUT PVOID_T *pri_data)
This API is used to PUT HTTP request/response
OPERATE_RET http_inf_client_put_custom_content(IN CONST CHAR_T *url, IN CONST HTTP_INF_CB callback, IN http_custom_content_ctx_s *p_ctx, IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID *add_head_data, INOUT PVOID_T *pri_data)
This API is used to PUT HTTP request/response with customized content
INT_T http_inf_write_content_raw(INOUT HTTP_INF_H_S *p_inf, IN CONST BYTE_T *p_data, IN CONST UINT_T len, BOOL_T chunked)
This API is used to write raw HTTP request content
OPERATE_RET httpc_inf_read_header_raw(INOUT HTTP_INF_H_S *p_inf)
This API is used to read raw HTTP response header
INT_T(* HTTP_DATA_RECV)(PVOID_T hand, PVOID_T buf, UINT_T len)
This API is used to handle HTTP response content
Definition: http_inf.h:31
OPERATE_RET fill_url_head(INOUT HTTP_URL_H_S *hu_h, IN CONST CHAR_T *url_h)
Initiaze url of HTTP request
OPERATE_RET(* HTTP_INF_CB)(HTTP_INF_H_S *hand)
This API is used to handle customized HTTP response
Definition: http_inf.h:60
HTTP_URL_H_S * create_http_url_h(IN CONST USHORT_T buf_len, IN CONST USHORT_T param_cnt)
Create url of HTTP request
INT_T httpc_inf_read_content_raw(IN HTTP_INF_H_S *p_inf, IN BYTE_T *buf, IN CONST UINT_T buf_len)
This API is used to read raw HTTP response content
VOID del_http_url_h(IN HTTP_URL_H_S *hu_h)
Free url of HTTP request
OPERATE_RET http_inf_client_put_raw_field(IN CONST CHAR_T *url, IN INT_T len, INOUT HTTP_INF_H_S *p_inf, IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID *add_head_data)
This API is used to PUT raw HTTP request/response, extra header is supported
OPERATE_RET http_inf_close_raw(INOUT HTTP_INF_H_S *p_inf)
This API is used to close raw HTTP request
OPERATE_RET http_inf_client_get_file(IN CONST CHAR_T *url, IN CONST HTTP_INF_CB callback, INOUT PVOID_T *pri_data, IN CONST UINT_T file_offset, IN CONST UINT_T file_size)
This API is used to GET HTTP file
OPERATE_RET http_inf_client_post_raw_field(IN CONST CHAR_T *url, IN CONST UINT_T len, INOUT HTTP_INF_H_S *p_inf, IN http_hdr_field_sel_t field_flags)
This API is used to POST raw HTTP request/response
OPERATE_RET http_inf_client_post_field(IN CONST CHAR_T *url, IN CONST HTTP_INF_CB callback, IN CONST BYTE_T *data, IN CONST UINT_T len, IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID *add_head_data, IN CONST CHAR_T *p_decode_key, INOUT PVOID_T *pri_data, IN CONST http_hdr_field_sel_t field_flags)
This API is used to POST HTTP request/response
HTTP Client Module
http_hdr_field_sel_t
Definition: httpc.h:94
provide log sequence api
Definition of HTTP request/response structure
Definition: http_inf.h:36
BOOL_T chunked
Definition: http_inf.h:38
CHAR_T * p_decode_key
Definition: http_inf.h:50
INT_T status_code
Definition: http_inf.h:48
PVOID_T * pri_data
Definition: http_inf.h:46
PVOID_T hand
Definition: http_inf.h:42
UINT_T content_len
Definition: http_inf.h:40
HTTP_DATA_RECV recv
Definition: http_inf.h:44
Definition of HTTP URL param structure
Definition: http_inf.h:65
BYTE_T cnt
Definition: http_inf.h:69
BYTE_T total
Definition: http_inf.h:67
Definition of HTTP URL structure
Definition: http_inf.h:78
USHORT_T head_size
Definition: http_inf.h:84
HTTP_PARAM_H_S * param_h
Definition: http_inf.h:80
USHORT_T buf_len
Definition: http_inf.h:86
CHAR_T * param_in
Definition: http_inf.h:82
Definition: httpc.h:127