#ifndef LIBOSS_DEFINE_H #define LIBOSS_DEFINE_H #include "aos_string.h" #include "aos_list.h" #include "aos_transport.h" #ifdef __cplusplus # define OSS_CPP_START extern "C" { # define OSS_CPP_END } #else # define OSS_CPP_START # define OSS_CPP_END #endif #define aos_xml_error_status_set(STATUS, RES) do { \ aos_status_set(STATUS, RES, AOS_XML_PARSE_ERROR_CODE, NULL); \ } while(0) #define aos_file_error_status_set(STATUS, RES) do { \ aos_status_set(STATUS, RES, AOS_OPEN_FILE_ERROR_CODE, NULL); \ } while(0) #define aos_inconsistent_error_status_set(STATUS, RES) do { \ aos_status_set(STATUS, RES, AOS_INCONSISTENT_ERROR_CODE, NULL); \ } while(0) extern const char OSS_CANNONICALIZED_HEADER_ACL[]; extern const char OSS_CANNONICALIZED_HEADER_SOURCE[]; extern const char OSS_CANNONICALIZED_HEADER_PREFIX[]; extern const char OSS_CANNONICALIZED_HEADER_DATE[]; extern const char OSS_CANNONICALIZED_HEADER_COPY_SOURCE[]; extern const char OSS_CONTENT_MD5[]; extern const char OSS_CONTENT_TYPE[]; extern const char OSS_CONTENT_LENGTH[]; extern const char OSS_DATE[]; extern const char OSS_AUTHORIZATION[]; extern const char OSS_ACCESSKEYID[]; extern const char OSS_EXPECT[]; extern const char OSS_EXPIRES[]; extern const char OSS_SIGNATURE[]; extern const char OSS_ACL[]; extern const char OSS_PREFIX[]; extern const char OSS_DELIMITER[]; extern const char OSS_MARKER[]; extern const char OSS_MAX_KEYS[]; extern const char OSS_UPLOADS[]; extern const char OSS_UPLOAD_ID[]; extern const char OSS_MAX_PARTS[]; extern const char OSS_KEY_MARKER[]; extern const char OSS_UPLOAD_ID_MARKER[]; extern const char OSS_MAX_UPLOADS[]; extern const char OSS_PARTNUMBER[]; extern const char OSS_PART_NUMBER_MARKER[]; extern const char OSS_APPEND[]; extern const char OSS_POSITION[]; extern const char OSS_MULTIPART_CONTENT_TYPE[]; extern const char OSS_COPY_SOURCE[]; extern const char OSS_COPY_SOURCE_RANGE[]; extern const char OSS_SECURITY_TOKEN[]; extern const char OSS_STS_SECURITY_TOKEN[]; extern const char OSS_OBJECT_TYPE[]; extern const char OSS_NEXT_APPEND_POSITION[]; extern const char OSS_HASH_CRC64_ECMA[]; extern const char OSS_CALLBACK[]; extern const char OSS_CALLBACK_VAR[]; extern const char OSS_PROCESS[]; extern const char OSS_LIFECYCLE[]; extern const char OSS_DELETE[]; extern const char OSS_YES[]; extern const char OSS_OBJECT_TYPE_NORMAL[]; extern const char OSS_OBJECT_TYPE_APPENDABLE[]; extern const char OSS_LIVE_CHANNEL[]; extern const char OSS_LIVE_CHANNEL_STATUS[]; extern const char OSS_COMP[]; extern const char OSS_LIVE_CHANNEL_STAT[]; extern const char OSS_LIVE_CHANNEL_HISTORY[]; extern const char OSS_LIVE_CHANNEL_VOD[]; extern const char OSS_LIVE_CHANNEL_START_TIME[]; extern const char OSS_LIVE_CHANNEL_END_TIME[]; extern const char OSS_PLAY_LIST_NAME[]; extern const char LIVE_CHANNEL_STATUS_DISABLED[]; extern const char LIVE_CHANNEL_STATUS_ENABLED[]; extern const char LIVE_CHANNEL_STATUS_IDLE[]; extern const char LIVE_CHANNEL_STATUS_LIVE[]; extern const char LIVE_CHANNEL_DEFAULT_TYPE[]; extern const char LIVE_CHANNEL_DEFAULT_PLAYLIST[]; extern const int LIVE_CHANNEL_DEFAULT_FRAG_DURATION; extern const int LIVE_CHANNEL_DEFAULT_FRAG_COUNT; extern const int OSS_MAX_PART_NUM; extern const int OSS_PER_RET_NUM; extern const int MAX_SUFFIX_LEN; typedef struct oss_lib_curl_initializer_s oss_lib_curl_initializer_t; /** * oss_acl is an ACL that can be specified when an object is created or * updated. Each canned ACL has a predefined value when expanded to a full * set of OSS ACL Grants. * Private canned ACL gives the owner FULL_CONTROL and no other permissions * are issued * Public Read canned ACL gives the owner FULL_CONTROL and all users Read * permission * Public Read Write canned ACL gives the owner FULL_CONTROL and all users * Read and Write permission **/ typedef enum { OSS_ACL_PRIVATE = 0, /*< private */ OSS_ACL_PUBLIC_READ = 1, /*< public read */ OSS_ACL_PUBLIC_READ_WRITE = 2 /*< public read write */ } oss_acl_e; typedef struct { aos_string_t endpoint; aos_string_t access_key_id; aos_string_t access_key_secret; aos_string_t sts_token; int is_cname; aos_string_t proxy_host; int proxy_port; aos_string_t proxy_user; aos_string_t proxy_passwd; } oss_config_t; typedef struct { oss_config_t *config; aos_http_controller_t *ctl; /*< aos http controller, more see aos_transport.h */ aos_pool_t *pool; } oss_request_options_t; typedef struct { aos_list_t node; aos_string_t key; aos_string_t last_modified; aos_string_t etag; aos_string_t size; aos_string_t owner_id; aos_string_t owner_display_name; } oss_list_object_content_t; typedef struct { aos_list_t node; aos_string_t prefix; } oss_list_object_common_prefix_t; typedef struct { aos_list_t node; aos_string_t key; aos_string_t upload_id; aos_string_t initiated; } oss_list_multipart_upload_content_t; typedef struct { aos_list_t node; aos_string_t part_number; aos_string_t size; aos_string_t etag; aos_string_t last_modified; } oss_list_part_content_t; typedef struct { aos_list_t node; aos_string_t part_number; aos_string_t etag; } oss_complete_part_content_t; typedef struct { int part_num; char *etag; } oss_upload_part_t; typedef struct { aos_string_t prefix; aos_string_t marker; aos_string_t delimiter; int max_ret; int truncated; aos_string_t next_marker; aos_list_t object_list; aos_list_t common_prefix_list; } oss_list_object_params_t; typedef struct { aos_string_t part_number_marker; int max_ret; int truncated; aos_string_t next_part_number_marker; aos_list_t part_list; } oss_list_upload_part_params_t; typedef struct { aos_string_t prefix; aos_string_t key_marker; aos_string_t upload_id_marker; aos_string_t delimiter; int max_ret; int truncated; aos_string_t next_key_marker; aos_string_t next_upload_id_marker; aos_list_t upload_list; } oss_list_multipart_upload_params_t; typedef struct { aos_string_t source_bucket; aos_string_t source_object; aos_string_t dest_bucket; aos_string_t dest_object; aos_string_t upload_id; int part_num; int64_t range_start; int64_t range_end; } oss_upload_part_copy_params_t; typedef struct { aos_string_t filename; /**< file range read filename */ int64_t file_pos; /**< file range read start position */ int64_t file_last; /**< file range read last position */ } oss_upload_file_t; typedef struct { aos_list_t node; aos_string_t id; aos_string_t prefix; aos_string_t status; int days; aos_string_t date; } oss_lifecycle_rule_content_t; typedef struct { aos_list_t node; aos_string_t key; } oss_object_key_t; typedef struct { char *suffix; char *type; } oss_content_type_t; typedef struct { int64_t part_size; // bytes, default 1MB int32_t thread_num; // default 1 int enable_checkpoint; // default disable, false aos_string_t checkpoint_path; // dafault ./filepath.ucp or ./filepath.dcp } oss_resumable_clt_params_t; typedef struct { aos_string_t type; int32_t frag_duration; int32_t frag_count; aos_string_t play_list_name; }oss_live_channel_target_t; typedef struct { aos_string_t name; aos_string_t description; aos_string_t status; oss_live_channel_target_t target; } oss_live_channel_configuration_t; typedef struct { aos_list_t node; aos_string_t publish_url; } oss_live_channel_publish_url_t; typedef struct { aos_list_t node; aos_string_t play_url; } oss_live_channel_play_url_t; typedef struct { int32_t width; int32_t height; int32_t frame_rate; int32_t band_width; aos_string_t codec; } oss_video_stat_t; typedef struct { int32_t band_width; int32_t sample_rate; aos_string_t codec; } oss_audio_stat_t; typedef struct { aos_string_t pushflow_status; aos_string_t connected_time; aos_string_t remote_addr; oss_video_stat_t video_stat; oss_audio_stat_t audio_stat; } oss_live_channel_stat_t; typedef struct { aos_list_t node; aos_string_t name; aos_string_t description; aos_string_t status; aos_string_t last_modified; aos_list_t publish_url_list; aos_list_t play_url_list; } oss_live_channel_content_t; typedef struct { aos_string_t prefix; aos_string_t marker; int max_keys; int truncated; aos_string_t next_marker; aos_list_t live_channel_list; } oss_list_live_channel_params_t; typedef struct { aos_list_t node; aos_string_t start_time; aos_string_t end_time; aos_string_t remote_addr; } oss_live_record_content_t; #endif