lnk commit front code
This commit is contained in:
152
include/oss_sdk/aos_transport.h
Normal file
152
include/oss_sdk/aos_transport.h
Normal file
@@ -0,0 +1,152 @@
|
||||
#ifndef LIBAOS_TRANSPORT_H
|
||||
#define LIBAOS_TRANSPORT_H
|
||||
|
||||
#include "aos_define.h"
|
||||
#include "aos_buf.h"
|
||||
|
||||
|
||||
AOS_CPP_START
|
||||
|
||||
typedef struct aos_http_request_s aos_http_request_t;
|
||||
typedef struct aos_http_response_s aos_http_response_t;
|
||||
typedef struct aos_http_transport_s aos_http_transport_t;
|
||||
typedef struct aos_http_controller_s aos_http_controller_t;
|
||||
|
||||
typedef struct aos_http_request_options_s aos_http_request_options_t;
|
||||
typedef struct aos_http_transport_options_s aos_http_transport_options_t;
|
||||
typedef struct aos_curl_http_transport_s aos_curl_http_transport_t;
|
||||
|
||||
typedef int (*aos_read_http_body_pt)(aos_http_request_t *req, char *buffer, int len);
|
||||
typedef int (*aos_write_http_body_pt)(aos_http_response_t *resp, const char *buffer, int len);
|
||||
|
||||
typedef void (*oss_progress_callback)(int64_t consumed_bytes, int64_t total_bytes);
|
||||
|
||||
void aos_curl_response_headers_parse(aos_pool_t *p, aos_table_t *headers, char *buffer, int len);
|
||||
aos_http_transport_t *aos_curl_http_transport_create(aos_pool_t *p);
|
||||
int aos_curl_http_transport_perform(aos_http_transport_t *t);
|
||||
|
||||
struct aos_http_request_options_s {
|
||||
int speed_limit;
|
||||
int speed_time;
|
||||
int dns_cache_timeout;
|
||||
int connect_timeout;
|
||||
int64_t max_memory_size;
|
||||
int enable_crc;
|
||||
char *proxy_host;
|
||||
char *proxy_auth;
|
||||
};
|
||||
|
||||
struct aos_http_transport_options_s {
|
||||
char *user_agent;
|
||||
char *cacerts_path;
|
||||
uint32_t ssl_verification_disabled:1;
|
||||
};
|
||||
|
||||
#define AOS_HTTP_BASE_CONTROLLER_DEFINE \
|
||||
aos_http_request_options_t *options; \
|
||||
aos_pool_t *pool; \
|
||||
int64_t start_time; \
|
||||
int64_t first_byte_time; \
|
||||
int64_t finish_time; \
|
||||
uint32_t owner:1; \
|
||||
void *user_data;
|
||||
|
||||
struct aos_http_controller_s {
|
||||
AOS_HTTP_BASE_CONTROLLER_DEFINE
|
||||
};
|
||||
|
||||
typedef struct aos_http_controller_ex_s {
|
||||
AOS_HTTP_BASE_CONTROLLER_DEFINE
|
||||
// private
|
||||
int error_code;
|
||||
char *reason; // can't modify
|
||||
} aos_http_controller_ex_t;
|
||||
|
||||
typedef enum {
|
||||
BODY_IN_MEMORY = 0,
|
||||
BODY_IN_FILE,
|
||||
BODY_IN_CALLBACK
|
||||
} aos_http_body_type_e;
|
||||
|
||||
struct aos_http_request_s {
|
||||
char *host;
|
||||
char *proto;
|
||||
char *signed_url;
|
||||
|
||||
http_method_e method;
|
||||
char *uri;
|
||||
char *resource;
|
||||
aos_table_t *headers;
|
||||
aos_table_t *query_params;
|
||||
|
||||
aos_list_t body;
|
||||
int64_t body_len;
|
||||
char *file_path;
|
||||
aos_file_buf_t *file_buf;
|
||||
|
||||
aos_pool_t *pool;
|
||||
void *user_data;
|
||||
aos_read_http_body_pt read_body;
|
||||
|
||||
aos_http_body_type_e type;
|
||||
|
||||
oss_progress_callback progress_callback;
|
||||
uint64_t crc64;
|
||||
int64_t consumed_bytes;
|
||||
};
|
||||
|
||||
struct aos_http_response_s {
|
||||
int status;
|
||||
aos_table_t *headers;
|
||||
|
||||
aos_list_t body;
|
||||
int64_t body_len;
|
||||
char *file_path;
|
||||
aos_file_buf_t* file_buf;
|
||||
int64_t content_length;
|
||||
|
||||
aos_pool_t *pool;
|
||||
void *user_data;
|
||||
aos_write_http_body_pt write_body;
|
||||
|
||||
aos_http_body_type_e type;
|
||||
|
||||
oss_progress_callback progress_callback;
|
||||
uint64_t crc64;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
TRANS_STATE_INIT,
|
||||
TRANS_STATE_HEADER,
|
||||
TRANS_STATE_BODY_IN,
|
||||
TRANS_STATE_BODY_OUT,
|
||||
TRANS_STATE_ABORT,
|
||||
TRANS_STATE_DONE
|
||||
} aos_transport_state_e;
|
||||
|
||||
#define AOS_HTTP_BASE_TRANSPORT_DEFINE \
|
||||
aos_http_request_t *req; \
|
||||
aos_http_response_t *resp; \
|
||||
aos_pool_t *pool; \
|
||||
aos_transport_state_e state; \
|
||||
aos_array_header_t *cleanup; \
|
||||
aos_http_transport_options_t *options; \
|
||||
aos_http_controller_ex_t *controller;
|
||||
|
||||
struct aos_http_transport_s {
|
||||
AOS_HTTP_BASE_TRANSPORT_DEFINE
|
||||
};
|
||||
|
||||
struct aos_curl_http_transport_s {
|
||||
AOS_HTTP_BASE_TRANSPORT_DEFINE
|
||||
CURL *curl;
|
||||
char *url;
|
||||
struct curl_slist *headers;
|
||||
curl_read_callback header_callback;
|
||||
curl_read_callback read_callback;
|
||||
curl_write_callback write_callback;
|
||||
};
|
||||
|
||||
AOS_CPP_END
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user