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
116 IN CONST CHAR_T *url,
117 IN CONST tuya_tls_config_t* tls_config,
118 IN CONST http_hdr_field_sel_t field_flags,
119 IN CONST HTTP_INF_CB callback,
120 IN CONST CHAR_T *p_decode_key,
121 INOUT PVOID_T *pri_data);
122
134OPERATE_RET http_inf_client_get_with_head(IN CONST CHAR_T *url,
135 IN CONST HTTP_INF_CB callback,
136 INOUT PVOID_T *pri_data,
137 IN HTTP_HEAD_ADD_CB add_head_cb,
138 IN VOID* add_head_data);
139
151#define http_inf_client_get_file(url, callback, pri_data, file_offset, file_size) \
152 http_inf_client_get_file_session(url, callback, pri_data, file_offset, file_size, FALSE)
153
166OPERATE_RET http_inf_client_get_file_session(IN CONST CHAR_T *url,
167 IN CONST HTTP_INF_CB callback,
168 INOUT PVOID_T *pri_data,
169 IN CONST UINT_T file_offset,
170 IN CONST UINT_T file_size,
171 IN BOOL_T session_persistence);
178OPERATE_RET http_inf_client_set_session_timeout(IN UINT16_T timeout_ms);
179
180#define http_inf_client_post(url, callback, data, len, add_head_cb, add_head_data, p_decode_key, pri_data) \
181 http_inf_client_post_field(url, callback, data, len, add_head_cb, add_head_data, p_decode_key, pri_data, \
182 STANDARD_HDR_FLAGS|HDR_ADD_CONN_KEEP_ALIVE|HDR_ADD_CONTENT_TYPE_FORM_URLENCODE)
183
184#define http_inf_client_post_field(url, callback, data, len, \
185 add_head_cb, add_head_data, \
186 p_decode_key, pri_data, field_flags) \
187 http_inf_client_post_field_session(url, callback, data, len, \
188 add_head_cb, add_head_data, \
189 p_decode_key, pri_data, field_flags, FALSE)
190
191#define http_inf_client_post_session(url, callback, data, len, \
192 add_head_cb, add_head_data, \
193 p_decode_key, pri_data, session_persistence) \
194 http_inf_client_post_field_session(url, callback, data, len, \
195 add_head_cb, add_head_data, \
196 p_decode_key, pri_data, \
197 STANDARD_HDR_FLAGS|HDR_ADD_CONN_KEEP_ALIVE|HDR_ADD_CONTENT_TYPE_FORM_URLENCODE, \
198 session_persistence)
199
216OPERATE_RET http_inf_client_post_field_session(IN CONST CHAR_T *url,
217 IN CONST HTTP_INF_CB callback,
218 IN CONST BYTE_T *data,
219 IN CONST UINT_T len,
220 IN HTTP_HEAD_ADD_CB add_head_cb,
221 IN VOID* add_head_data,
222 IN CONST CHAR_T *p_decode_key,
223 INOUT PVOID_T *pri_data,
224 IN CONST http_hdr_field_sel_t field_flags,
225 IN BOOL_T session_persistence);
226
227#define http_inf_client_post_raw(url, len, p_inf) \
228 http_inf_client_post_raw_field(url, len, p_inf, \
229 HRD_ADD_HTTP_RAW | STANDARD_HDR_FLAGS | HDR_ADD_CONN_KEEP_ALIVE | HDR_ADD_CONTENT_TYPE_JSON)
230
241OPERATE_RET http_inf_client_post_raw_field(IN CONST CHAR_T *url,
242 IN CONST UINT_T len,
243 INOUT HTTP_INF_H_S *p_inf,
244 IN http_hdr_field_sel_t field_flags);
245
256#define http_inf_client_get_raw(url, p_inf, offset, total_len) \
257 http_inf_client_get_raw_with_head(url, p_inf, offset, total_len, NULL, NULL)
258
271OPERATE_RET http_inf_client_get_raw_with_head(IN CONST CHAR_T *url,
272 INOUT HTTP_INF_H_S *p_inf,
273 IN UINT_T offset, IN UINT_T total_len,
274 IN HTTP_HEAD_ADD_CB add_head_cb,
275 IN VOID* add_head_data);
276
286#define http_inf_client_put_raw(url, len, p_inf) \
287 http_inf_client_put_raw_field(url, len, p_inf, NULL, NULL)
288
300OPERATE_RET http_inf_client_put_raw_field(IN CONST CHAR_T *url,
301 IN INT_T len,
302 INOUT HTTP_INF_H_S *p_inf,
303 IN HTTP_HEAD_ADD_CB add_head_cb,
304 IN VOID* add_head_data);
305
317 IN CONST BYTE_T *p_data,
318 IN CONST UINT_T len,
319 BOOL_T chunked);
320
328OPERATE_RET httpc_inf_read_header_raw(INOUT HTTP_INF_H_S *p_inf);
329
339INT_T httpc_inf_read_content_raw(IN HTTP_INF_H_S *p_inf, IN BYTE_T *buf, IN CONST UINT_T buf_len);
340
348OPERATE_RET http_inf_close_raw(INOUT HTTP_INF_H_S *p_inf);
349
363OPERATE_RET http_inf_client_add_head_cb_post(IN CONST char *url,
364 IN CONST HTTP_INF_CB callback,
365 IN CONST BYTE_T *data,
366 IN CONST UINT_T len,
367 IN HTTP_HEAD_ADD_CB add_head_cb,
368 IN VOID* add_head_data,
369 INOUT PVOID_T *pri_data);
370
384OPERATE_RET http_inf_client_put(IN CONST CHAR_T *url,
385 IN CONST HTTP_INF_CB callback,
386 IN CONST BYTE_T *data,
387 IN CONST UINT_T len,
388 IN HTTP_HEAD_ADD_CB add_head_cb,
389 IN VOID* add_head_data,
390 INOUT PVOID_T *pri_data);
391
404OPERATE_RET http_inf_client_put_custom_content(IN CONST CHAR_T *url,
405 IN CONST HTTP_INF_CB callback,
407 IN HTTP_HEAD_ADD_CB add_head_cb, IN VOID* add_head_data,
408 INOUT PVOID_T *pri_data);
409
418HTTP_URL_H_S *create_http_url_h(IN CONST USHORT_T buf_len, IN CONST USHORT_T param_cnt);
419
427
436OPERATE_RET fill_url_head(INOUT HTTP_URL_H_S *hu_h, IN CONST CHAR_T *url_h);
437
447OPERATE_RET fill_url_param(INOUT HTTP_URL_H_S *hu_h, IN CONST CHAR_T *key, IN CONST CHAR_T *value);
448
449#ifdef __cplusplus
450}
451#endif
452
453#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_post_field_session(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, IN BOOL_T session_persistence)
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
OPERATE_RET http_inf_client_set_session_timeout(IN UINT16_T timeout_ms)
This API is used to set the global default session timeout
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_session(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, IN BOOL_T session_persistence)
This API is used to GET HTTP file
OPERATE_RET http_inf_com_hanle_with_tls_config(IN CONST http_req_t *req, IN CONST CHAR_T *url, IN CONST tuya_tls_config_t *tls_config, IN CONST http_hdr_field_sel_t field_flags, IN CONST HTTP_INF_CB callback, IN CONST CHAR_T *p_decode_key, INOUT PVOID_T *pri_data)
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
HTTP Client Module
http_hdr_field_sel_t
Definition: httpc.h:95
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:130
Definition: httpc.h:157
Definition: tuya_tls.h:45