eSDKOBS.h 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495
  1. /*********************************************************************************
  2. * Copyright 2019 Huawei Technologies Co.,Ltd.
  3. * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
  4. * this file except in compliance with the License. You may obtain a copy of the
  5. * License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software distributed
  10. * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  11. * CONDITIONS OF ANY KIND, either express or implied. See the License for the
  12. * specific language governing permissions and limitations under the License.
  13. **********************************************************************************
  14. */
  15. #ifndef ESDKOBS_H
  16. #define ESDKOBS_H
  17. #include <stdint.h>
  18. #if defined __GNUC__ || defined LINUX
  19. #include <sys/select.h>
  20. #else
  21. #include <winsock2.h>
  22. #endif
  23. #ifdef WIN32
  24. #ifdef OBS_EXPORTS
  25. #define eSDK_OBS_API __declspec(dllexport)
  26. #else
  27. #define eSDK_OBS_API __declspec(dllimport)
  28. #endif
  29. #else
  30. #define eSDK_OBS_API __attribute__((__visibility__("default")))
  31. #endif
  32. #ifdef __cplusplus
  33. extern "C" {
  34. #endif
  35. #define OBS_INIT_WINSOCK 1
  36. #define OBS_INIT_ALL (OBS_INIT_WINSOCK)
  37. #define OBS_MAX_DELETE_OBJECT_NUMBER 1000
  38. #define OBS_MAX_DELETE_OBJECT_DOC 1024000
  39. #define ARRAY_LENGTH_4 4
  40. #define ARRAY_LENGTH_16 16
  41. #define ARRAY_LENGTH_32 32
  42. #define ARRAY_LENGTH_50 50
  43. #define ARRAY_LENGTH_64 64
  44. #define ARRAY_LENGTH_512 512
  45. #define ARRAY_LENGTH_1024 1024
  46. #define ARRAY_LENGTH_2014 2014
  47. typedef enum
  48. {
  49. OBS_STATUS_OK = 0,
  50. OBS_STATUS_InitCurlFailed,
  51. OBS_STATUS_InternalError,
  52. OBS_STATUS_OutOfMemory,
  53. OBS_STATUS_Interrupted,
  54. OBS_STATUS_QueryParamsTooLong,
  55. OBS_STATUS_FailedToIInitializeRequest,
  56. OBS_STATUS_MetadataHeadersTooLong,
  57. OBS_STATUS_BadContentType,
  58. OBS_STATUS_ContentTypeTooLong,
  59. OBS_STATUS_BadMd5,
  60. OBS_STATUS_Md5TooLong,
  61. OBS_STATUS_BadCacheControl,
  62. OBS_STATUS_CacheControlTooLong,
  63. OBS_STATUS_BadContentDispositionFilename,
  64. OBS_STATUS_ContentDispositionFilenameTooLong,
  65. OBS_STATUS_BadContentEncoding,
  66. OBS_STATUS_ContentEncodingTooLong,
  67. OBS_STATUS_BadIfMatchEtag,
  68. OBS_STATUS_IfMatchEtagTooLong,
  69. OBS_STATUS_BadIfNotMatchEtag,
  70. OBS_STATUS_IfNotMatchEtagTooLong,
  71. OBS_STATUS_UriTooLong,
  72. OBS_STATUS_XmlParseFailure,
  73. OBS_STATUS_UserIdTooLong,
  74. OBS_STATUS_UserDisplayNameTooLong,
  75. OBS_STATUS_EmailAddressTooLong,
  76. OBS_STATUS_GroupUriTooLong,
  77. OBS_STATUS_PermissionTooLong,
  78. OBS_STATUS_TooManyGrants,
  79. OBS_STATUS_BadGrantee,
  80. OBS_STATUS_BadPermission,
  81. OBS_STATUS_XmlDocumentTooLarge,
  82. OBS_STATUS_NameLookupError,
  83. OBS_STATUS_FailedToConnect,
  84. OBS_STATUS_ServerFailedVerification,
  85. OBS_STATUS_ConnectionFailed,
  86. OBS_STATUS_AbortedByCallback,
  87. OBS_STATUS_PartialFile,
  88. OBS_STATUS_InvalidParameter,
  89. OBS_STATUS_NoToken,
  90. OBS_STATUS_OpenFileFailed,
  91. OBS_STATUS_EmptyFile,
  92. /**
  93. * Errors from the obs service
  94. **/
  95. OBS_STATUS_AccessDenied,
  96. OBS_STATUS_AccountProblem,
  97. OBS_STATUS_AmbiguousGrantByEmailAddress,
  98. OBS_STATUS_BadDigest,
  99. OBS_STATUS_BucketAlreadyExists,
  100. OBS_STATUS_BucketAlreadyOwnedByYou,
  101. OBS_STATUS_BucketNotEmpty,
  102. OBS_STATUS_CredentialsNotSupported,
  103. OBS_STATUS_CrossLocationLoggingProhibited,
  104. OBS_STATUS_EntityTooSmall,
  105. OBS_STATUS_EntityTooLarge,
  106. OBS_STATUS_ExpiredToken,
  107. OBS_STATUS_IllegalVersioningConfigurationException,
  108. OBS_STATUS_IncompleteBody,
  109. OBS_STATUS_IncorrectNumberOfFilesInPostRequest,
  110. OBS_STATUS_InlineDataTooLarge,
  111. OBS_STATUS_InvalidAccessKeyId,
  112. OBS_STATUS_InvalidAddressingHeader,
  113. OBS_STATUS_InvalidArgument,
  114. OBS_STATUS_InvalidBucketName,
  115. OBS_STATUS_InvalidKey,
  116. OBS_STATUS_InvalidBucketState,
  117. OBS_STATUS_InvalidDigest,
  118. OBS_STATUS_InvalidLocationConstraint,
  119. OBS_STATUS_InvalidObjectState,
  120. OBS_STATUS_InvalidPart,
  121. OBS_STATUS_InvalidPartOrder,
  122. OBS_STATUS_InvalidPayer,
  123. OBS_STATUS_InvalidPolicyDocument,
  124. OBS_STATUS_InvalidRange,
  125. OBS_STATUS_InvalidRedirectLocation,
  126. OBS_STATUS_InvalidRequest,
  127. OBS_STATUS_InvalidSecurity,
  128. OBS_STATUS_InvalidSOAPRequest,
  129. OBS_STATUS_InvalidStorageClass,
  130. OBS_STATUS_InvalidTargetBucketForLogging,
  131. OBS_STATUS_InvalidToken,
  132. OBS_STATUS_InvalidURI,
  133. OBS_STATUS_MalformedACLError,
  134. OBS_STATUS_MalformedPolicy,
  135. OBS_STATUS_MalformedPOSTRequest,
  136. OBS_STATUS_MalformedXML,
  137. OBS_STATUS_MaxMessageLengthExceeded,
  138. OBS_STATUS_MaxPostPreDataLengthExceededError,
  139. OBS_STATUS_MetadataTooLarge,
  140. OBS_STATUS_MethodNotAllowed,
  141. OBS_STATUS_MissingAttachment,
  142. OBS_STATUS_MissingContentLength,
  143. OBS_STATUS_MissingRequestBodyError,
  144. OBS_STATUS_MissingSecurityElement,
  145. OBS_STATUS_MissingSecurityHeader,
  146. OBS_STATUS_NoLoggingStatusForKey,
  147. OBS_STATUS_NoSuchBucket,
  148. OBS_STATUS_NoSuchKey,
  149. OBS_STATUS_NoSuchLifecycleConfiguration,
  150. OBS_STATUS_NoSuchUpload,
  151. OBS_STATUS_NoSuchVersion,
  152. OBS_STATUS_NotImplemented,
  153. OBS_STATUS_NotSignedUp,
  154. OBS_STATUS_NotSuchBucketPolicy,
  155. OBS_STATUS_OperationAborted,
  156. OBS_STATUS_PermanentRedirect,
  157. OBS_STATUS_PreconditionFailed,
  158. OBS_STATUS_Redirect,
  159. OBS_STATUS_RestoreAlreadyInProgress,
  160. OBS_STATUS_RequestIsNotMultiPartContent,
  161. OBS_STATUS_RequestTimeout,
  162. OBS_STATUS_RequestTimeTooSkewed,
  163. OBS_STATUS_RequestTorrentOfBucketError,
  164. OBS_STATUS_SignatureDoesNotMatch,
  165. OBS_STATUS_ServiceUnavailable,
  166. OBS_STATUS_SlowDown,
  167. OBS_STATUS_TemporaryRedirect,
  168. OBS_STATUS_TokenRefreshRequired,
  169. OBS_STATUS_TooManyBuckets,
  170. OBS_STATUS_UnexpectedContent,
  171. OBS_STATUS_UnresolvableGrantByEmailAddress,
  172. OBS_STATUS_UserKeyMustBeSpecified,
  173. OBS_STATUS_InsufficientStorageSpace,
  174. OBS_STATUS_NoSuchWebsiteConfiguration,
  175. OBS_STATUS_NoSuchBucketPolicy,
  176. OBS_STATUS_NoSuchCORSConfiguration,
  177. OBS_STATUS_InArrearOrInsufficientBalance,
  178. OBS_STATUS_NoSuchTagSet,
  179. OBS_STATUS_ErrorUnknown,
  180. /*
  181. * The following are HTTP errors returned by obs without enough detail to
  182. * distinguish any of the above OBS_STATUS_error conditions
  183. */
  184. OBS_STATUS_HttpErrorMovedTemporarily,
  185. OBS_STATUS_HttpErrorBadRequest,
  186. OBS_STATUS_HttpErrorForbidden,
  187. OBS_STATUS_HttpErrorNotFound,
  188. OBS_STATUS_HttpErrorConflict,
  189. OBS_STATUS_HttpErrorUnknown,
  190. /*
  191. * posix new add errors
  192. */
  193. OBS_STATUS_QuotaTooSmall,
  194. /*
  195. * obs-meta errors
  196. */
  197. OBS_STATUS_MetadataNameDuplicate,
  198. OBS_STATUS_BUTT
  199. } obs_status;
  200. typedef enum
  201. {
  202. OBS_URI_STYLE_VIRTUALHOST = 0,
  203. OBS_URI_STYLE_PATH = 1
  204. } obs_uri_style;
  205. typedef enum
  206. {
  207. OBS_PROTOCOL_HTTPS = 0,
  208. OBS_PROTOCOL_HTTP = 1
  209. } obs_protocol;
  210. typedef enum
  211. {
  212. OBS_STORAGE_CLASS_STANDARD = 0, /* STANDARD */
  213. OBS_STORAGE_CLASS_STANDARD_IA = 1, /* STANDARD_IA */
  214. OBS_STORAGE_CLASS_GLACIER = 2, /* GLACIER */
  215. OBS_STORAGE_CLASS_BUTT
  216. } obs_storage_class;
  217. typedef enum image_process_mode
  218. {
  219. obs_image_process_invalid_mode,
  220. obs_image_process_cmd,
  221. obs_image_process_style
  222. }image_process_mode;
  223. typedef enum
  224. {
  225. OBS_CANNED_ACL_PRIVATE = 0, //used by s3 and obs api
  226. OBS_CANNED_ACL_PUBLIC_READ = 1, //used by s3 and obs api
  227. OBS_CANNED_ACL_PUBLIC_READ_WRITE = 2, //used by s3 and obs api
  228. OBS_CANNED_ACL_AUTHENTICATED_READ = 3, //only used by s3 api
  229. OBS_CANNED_ACL_BUCKET_OWNER_READ = 4, //only used by s3 api
  230. OBS_CANNED_ACL_BUCKET_OWNER_FULL_CONTROL = 5, //only used by s3 api
  231. OBS_CANNED_ACL_LOG_DELIVERY_WRITE = 6, //only used by s3 api
  232. OBS_CANNED_ACL_PUBLIC_READ_DELIVERED = 7, //only used by obs api
  233. OBS_CANNED_ACL_PUBLIC_READ_WRITE_DELIVERED = 8, //only used by obs api
  234. OBS_CANNED_ACL_BUTT
  235. } obs_canned_acl;
  236. typedef enum
  237. {
  238. OBS_REDUNDANCY_1AZ = 0,
  239. OBS_REDUNDANCY_3AZ = 1, //only used by obs api
  240. OBS_REDUNDANCY_BUTT
  241. } obs_az_redundancy;
  242. typedef enum
  243. {
  244. OBS_GRANT_READ = 0,
  245. OBS_GRANT_WRITE = 1,
  246. OBS_GRANT_READ_ACP = 2,
  247. OBS_GRANT_WRITE_ACP = 3,
  248. OBS_GRANT_FULL_CONTROL = 4,
  249. OBS_GRANT_READ_DELIVERED = 5,
  250. OBS_GRANT_FULL_CONTROL_DELIVERED = 6,
  251. OBS_GRANT_BUTT
  252. } obs_grant_domain;
  253. typedef enum
  254. {
  255. OBS_GRANTEE_TYPE_HUAWEI_CUSTOMER_BYEMAIL = 0, // only used by s3 api
  256. OBS_GRANTEE_TYPE_CANONICAL_USER = 1, // used by both of s3 and obs api
  257. OBS_GRANTEE_TYPE_ALL_OBS_USERS = 2, // only used by s3 api
  258. OBS_GRANTEE_TYPE_ALL_USERS = 3, // used by both of s3 and obs api
  259. OBS_GRANTEE_TYPE_LOG_DELIVERY = 4, // only used by s3 api
  260. OBS_GRANTEE_TYPE_BUTT
  261. } obs_grantee_type;
  262. typedef enum
  263. {
  264. OBS_PERMISSION_READ = 0,
  265. OBS_PERMISSION_WRITE = 1,
  266. OBS_PERMISSION_READ_ACP = 2,
  267. OBS_PERMISSION_WRITE_ACP = 3,
  268. OBS_PERMISSION_FULL_CONTROL = 4,
  269. OBS_PERMISSION_BUTT
  270. } obs_permission;
  271. typedef enum
  272. {
  273. OBS_TIER_NULL = 0,
  274. OBS_TIER_STANDARD,
  275. OBS_TIER_EXPEDITED,
  276. OBS_TIER_BULK,
  277. } obs_tier;
  278. typedef enum
  279. {
  280. UPLOAD_NOTSTART,
  281. UPLOADING,
  282. UPLOAD_FAILED,
  283. UPLOAD_SUCCESS,
  284. STATUS_BUTT
  285. }part_upload_status;
  286. typedef enum
  287. {
  288. OBS_SMN_FILTER_NULL = 0,
  289. OBS_SMN_FILTER_PREFIX,
  290. OBS_SMN_FILTER_SUFFIX
  291. }obs_smn_filter_rule_enum;
  292. typedef enum
  293. {
  294. SMN_EVENT_NULL = 0,
  295. SMN_EVENT_OBJECT_CREATED_ALL,
  296. SMN_EVENT_OBJECT_CREATED_PUT,
  297. SMN_EVENT_OBJECT_CREATED_POST,
  298. SMN_EVENT_OBJECT_CREATED_COPY,
  299. SMN_EVENT_OBJECT_CREATED_COMPLETE_MULTIPART_UPLOAD,
  300. SMN_EVENT_OBJECT_REMOVED_ALL,
  301. SMN_EVENT_OBJECT_REMOVED_DELETE,
  302. SMN_EVENT_OBJECT_REMOVED_DELETE_MARKER_CREATED,
  303. SMN_EVENT_REDUCED_REDUNDANCY_LOST_OBJECT
  304. }obs_smn_event_enum;
  305. typedef enum
  306. {
  307. DOWNLOAD_NOTSTART,
  308. DOWNLOADING,
  309. DOWNLOAD_FAILED,
  310. DOWNLOAD_SUCCESS,
  311. COMBINE_SUCCESS,
  312. DOWN_STATUS_BUTT
  313. }download_status;
  314. typedef enum
  315. {
  316. OBS_USE_API_S3 = 0,
  317. OBS_USE_API_OBS = 1
  318. }obs_use_api;
  319. typedef enum
  320. {
  321. OBS_NO_CERTIFICATE,
  322. OBS_DEFAULT_CERTIFICATE,
  323. OBS_DEFINED_CERTIFICATE
  324. }obs_certificate_conf;
  325. typedef enum
  326. {
  327. OBS_ENCRYPTION_KMS,
  328. OBS_ENCRYPTION_SSEC
  329. }obs_encryption_type;
  330. typedef enum
  331. {
  332. OBJECT_DELIVERED_TRUE = 0, // Default value is true.
  333. OBJECT_DELIVERED_FALSE = 1
  334. }obs_object_delivered;
  335. typedef enum
  336. {
  337. BUCKET_DELIVERED_FALSE = 0, // Default value is false.
  338. BUCKET_DELIVERED_TRUE = 1
  339. }obs_bucket_delivered;
  340. typedef enum
  341. {
  342. OBS_BUCKET_OBJECT = 0, //object bucket
  343. OBS_BUCKET_PFS = 1 //pfs bucket
  344. }obs_bucket_type;
  345. typedef enum
  346. {
  347. OBS_BUCKET_LIST_ALL = 0, //list all type bucket
  348. OBS_BUCKET_LIST_OBJECT = 1, //list object bucket
  349. OBS_BUCKET_LIST_PFS = 2 //list pfs bucket
  350. }obs_bucket_list_type;
  351. #define OBS_COMMON_LEN_256 256
  352. #define OBS_MAX_ACL_GRANT_COUNT 100
  353. #define OBS_MAX_GRANTEE_EMAIL_ADDRESS_SIZE 128
  354. #define OBS_MAX_GRANTEE_USER_ID_SIZE 128
  355. #define OBS_MAX_GRANTEE_DISPLAY_NAME_SIZE 128
  356. #define OBS_MAX_HOSTNAME_SIZE 255
  357. #define OBS_MAX_KEY_SIZE 1024
  358. #define OBS_MAX_METADATA_SIZE 4096
  359. #define OBS_METADATA_HEADER_NAME_PREFIX "x-amz-meta-"
  360. #define OBS_VERSION_STATUS_ENABLED "Enabled"
  361. #define OBS_VERSION_STATUS_SUSPENDED "Suspended"
  362. #define OBS_MAX_METADATA_COUNT \
  363. (OBS_MAX_METADATA_SIZE / (sizeof(OBS_METADATA_HEADER_NAME_PREFIX "nv") - 1))
  364. typedef struct obs_request_context obs_request_context;
  365. typedef struct tag_obs_create_bucket_params
  366. {
  367. obs_canned_acl canned_acl;
  368. obs_az_redundancy az_redundancy;
  369. const char *location_constraint;
  370. } obs_create_bucket_params;
  371. typedef struct obs_acl_grant
  372. {
  373. obs_grantee_type grantee_type;
  374. union
  375. {
  376. struct
  377. {
  378. char email_address[OBS_MAX_GRANTEE_EMAIL_ADDRESS_SIZE];
  379. } huawei_customer_by_email; // only used by s3 api
  380. struct
  381. {
  382. char id[OBS_MAX_GRANTEE_USER_ID_SIZE];
  383. char display_name[OBS_MAX_GRANTEE_DISPLAY_NAME_SIZE]; // only used by s3 api
  384. } canonical_user;
  385. } grantee;
  386. obs_permission permission;
  387. obs_bucket_delivered bucket_delivered; // only used by obs api
  388. }obs_acl_grant;
  389. typedef struct obs_acl_group
  390. {
  391. int acl_grant_count;
  392. obs_acl_grant *acl_grants;
  393. }obs_acl_group;
  394. typedef struct obs_object_info
  395. {
  396. char* key;
  397. char* version_id;
  398. }obs_object_info;
  399. typedef struct obs_delete_object_info
  400. {
  401. unsigned int keys_number;
  402. int quiet;
  403. }obs_delete_object_info;
  404. typedef struct manager_acl_info
  405. {
  406. obs_object_info object_info;
  407. char *owner_id;
  408. char *owner_display_name;
  409. int *acl_grant_count_return;
  410. obs_object_delivered object_delivered; // only used by obs api
  411. obs_acl_grant *acl_grants;
  412. }manager_acl_info;
  413. typedef struct obs_upload_part_info
  414. {
  415. unsigned int part_number;
  416. char *upload_id;
  417. }obs_upload_part_info;
  418. typedef struct obs_complete_upload_Info
  419. {
  420. unsigned int part_number;
  421. char *etag;
  422. }obs_complete_upload_Info;
  423. typedef struct list_part_info
  424. {
  425. char *upload_id;
  426. unsigned int max_parts;
  427. unsigned int part_number_marker;
  428. }list_part_info;
  429. typedef struct obs_name_value
  430. {
  431. char *name;
  432. char *value;
  433. } obs_name_value;
  434. typedef struct obs_error_details
  435. {
  436. const char *message;
  437. const char *resource;
  438. const char *further_details;
  439. int extra_details_count;
  440. obs_name_value *extra_details;
  441. } obs_error_details;
  442. typedef struct obs_response_properties
  443. {
  444. const char *request_id;
  445. const char *request_id2;
  446. const char *content_type;
  447. uint64_t content_length;
  448. const char *server;
  449. const char *etag;
  450. const char *expiration;
  451. const char *website_redirect_location;
  452. const char *version_id;
  453. int64_t last_modified;
  454. int meta_data_count;
  455. const obs_name_value *meta_data;
  456. char use_server_side_encryption;
  457. const char *allow_origin;
  458. const char *allow_headers;
  459. const char *max_age;
  460. const char *allow_methods;
  461. const char *expose_headers;
  462. const char *storage_class;
  463. const char *server_side_encryption;
  464. const char *kms_key_id;
  465. const char *customer_algorithm;
  466. const char *customer_key_md5;
  467. const char *bucket_location;
  468. const char *obs_version;
  469. const char *restore;
  470. const char *obs_object_type;
  471. const char *obs_next_append_position;
  472. const char *obs_head_epid;
  473. const char *reserved_indicator;
  474. } obs_response_properties;
  475. typedef struct obs_list_objects_content
  476. {
  477. const char *key;
  478. int64_t last_modified;
  479. const char *etag;
  480. uint64_t size;
  481. const char *owner_id;
  482. const char *owner_display_name;
  483. const char *storage_class;
  484. const char *type;
  485. } obs_list_objects_content;
  486. typedef struct obs_version
  487. {
  488. const char *key;
  489. const char *version_id;
  490. const char *is_latest;
  491. int64_t last_modified;
  492. const char *etag;
  493. uint64_t size;
  494. const char *owner_id;
  495. const char *owner_display_name;
  496. const char *storage_class;
  497. const char *is_delete;
  498. } obs_version;
  499. typedef struct obs_list_versions
  500. {
  501. const char* bucket_name;
  502. const char* prefix;
  503. const char* key_marker;
  504. const char* delimiter;
  505. const char* max_keys;
  506. obs_version* versions;
  507. int versions_count;
  508. const char** common_prefixes;
  509. int common_prefixes_count;
  510. } obs_list_versions;
  511. typedef struct obs_list_parts
  512. {
  513. unsigned int part_number;
  514. int64_t last_modified;
  515. const char *etag;
  516. uint64_t size;
  517. const char *storage_class;
  518. }obs_list_parts;
  519. typedef struct obs_list_multipart_upload
  520. {
  521. const char *key;
  522. const char *upload_id;
  523. const char *initiator_id;
  524. const char *initiator_display_name;
  525. const char *owner_id;
  526. const char *owner_display_name;
  527. const char *storage_class;
  528. int64_t initiated;
  529. } obs_list_multipart_upload;
  530. typedef struct obs_lifecycle_transtion
  531. {
  532. const char *date;
  533. const char *days;
  534. obs_storage_class storage_class;
  535. }obs_lifecycle_transtion;
  536. typedef struct obs_lifecycle_noncurrent_transtion
  537. {
  538. const char *noncurrent_version_days;
  539. obs_storage_class storage_class;
  540. }obs_lifecycle_noncurrent_transtion;
  541. typedef struct obs_lifecycle_conf
  542. {
  543. const char *date;
  544. const char *days;
  545. const char *id;
  546. const char *prefix;
  547. const char *status;
  548. const char *noncurrent_version_days;
  549. obs_lifecycle_transtion * transition;
  550. unsigned int transition_num;
  551. obs_lifecycle_noncurrent_transtion * noncurrent_version_transition;
  552. unsigned int noncurrent_version_transition_num;
  553. }obs_lifecycle_conf;
  554. typedef struct obs_bucket_cors_conf
  555. {
  556. const char *id;
  557. const char **allowed_method;
  558. unsigned int allowed_method_number;
  559. const char **allowed_origin;
  560. unsigned int allowed_origin_number;
  561. const char **allowed_header;
  562. unsigned int allowed_header_number;
  563. const char *max_age_seconds;
  564. const char **expose_header;
  565. unsigned int expose_header_number;
  566. }obs_bucket_cors_conf;
  567. typedef struct obs_uploaded_parts_total_info
  568. {
  569. int is_truncated;
  570. unsigned int nextpart_number_marker;
  571. char *initiator_id;
  572. char *initiator_display_name;
  573. char *owner_id;
  574. char *owner_display_name;
  575. char *sorage_class;
  576. int parts_count;
  577. }obs_uploaded_parts_total_info;
  578. typedef struct obs_copy_destination_object_info
  579. {
  580. char *destination_bucket;
  581. char *destination_key;
  582. char *version_id;
  583. int64_t *last_modified_return;
  584. int etag_return_size;
  585. char *etag_return;
  586. }obs_copy_destination_object_info;
  587. typedef struct _obs_upload_file_configuration
  588. {
  589. char *upload_file;
  590. uint64_t part_size;
  591. char * check_point_file;
  592. int enable_check_point;
  593. int task_num;
  594. }obs_upload_file_configuration;
  595. typedef struct _obs_download_file_configuration
  596. {
  597. char * downLoad_file;
  598. uint64_t part_size;
  599. char * check_point_file;
  600. int enable_check_point;
  601. int task_num;
  602. }obs_download_file_configuration;
  603. typedef struct _obs_upload_file_part_info
  604. {
  605. int part_num;
  606. uint64_t start_byte;
  607. uint64_t part_size;
  608. part_upload_status status_return;
  609. }obs_upload_file_part_info;
  610. typedef struct _obs_download_file_part_info
  611. {
  612. int part_num;
  613. uint64_t start_byte;
  614. uint64_t part_size;
  615. download_status status_return;
  616. }obs_download_file_part_info;
  617. typedef struct obs_set_bucket_redirect_all_conf
  618. {
  619. const char *host_name;
  620. const char *protocol;
  621. }obs_set_bucket_redirect_all_conf;
  622. typedef struct obs_delete_objects
  623. {
  624. const char *key;
  625. const char *code;
  626. const char *message;
  627. const char *delete_marker;
  628. const char *delete_marker_version_id;
  629. } obs_delete_objects;
  630. typedef struct bucket_website_routingrule
  631. {
  632. const char *key_prefix_equals;
  633. const char *http_errorcode_returned_equals;
  634. const char *protocol;
  635. const char *host_name;
  636. const char *replace_key_prefix_with;
  637. const char *replace_key_with;
  638. const char *http_redirect_code;
  639. }bucket_website_routingrule;
  640. typedef struct obs_set_bucket_website_conf
  641. {
  642. const char *suffix;
  643. const char *key;
  644. bucket_website_routingrule *routingrule_info;
  645. int routingrule_count;
  646. }obs_set_bucket_website_conf;
  647. typedef struct obs_smn_filter_rule
  648. {
  649. obs_smn_filter_rule_enum name;
  650. char* value;
  651. }obs_smn_filter_rule;
  652. typedef struct obs_smn_topic_configuration
  653. {
  654. char* topic;
  655. char* id;
  656. obs_smn_filter_rule* filter_rule;
  657. unsigned int filter_rule_num;
  658. obs_smn_event_enum* event;
  659. unsigned int event_num;
  660. }obs_smn_topic_configuration;
  661. typedef struct obs_smn_notification_configuration
  662. {
  663. obs_smn_topic_configuration* topic_conf;
  664. unsigned int topic_conf_num;
  665. }obs_smn_notification_configuration;
  666. /***************************response handle function*******************************************/
  667. typedef obs_status (obs_response_properties_callback)(const obs_response_properties *properties,
  668. void *callback_data);
  669. typedef void (obs_response_complete_callback)(obs_status status,
  670. const obs_error_details *error_details, void *callback_data);
  671. typedef int (obs_put_object_data_callback)(int buffer_size, char *buffer,
  672. void *callback_data);
  673. typedef int (obs_append_object_data_callback)(int buffer_size, char *buffer,
  674. void *callback_data);
  675. typedef int (obs_modify_object_data_callback)(int buffer_size, char *buffer,
  676. void *callback_data);
  677. typedef obs_status (obs_get_object_data_callback)(int buffer_size, const char *buffer,
  678. void *callback_data);
  679. typedef obs_status (obs_list_service_callback)(const char *owner_id,
  680. const char *owner_display_name,
  681. const char *bucket_name,
  682. int64_t creation_date_seconds,
  683. void *callback_data);
  684. typedef obs_status (obs_list_service_obs_callback)(const char *owner_id,
  685. const char *bucket_name,
  686. int64_t creation_date_seconds,
  687. const char *location,
  688. void *callback_data);
  689. typedef obs_status (obs_get_bucket_storage_policy)(const char * storage_class_policy,
  690. void *callback_data);
  691. typedef obs_status (obs_get_bucket_websiteconf_callback) (const char *hostname, const char *protocol,
  692. const char *suffix,const char *key, const bucket_website_routingrule *routingrule,
  693. int webdatacount, void *callback_data);
  694. typedef int (obs_upload_data_callback)(int buffer_size, char *buffer, void *callback_data);
  695. typedef obs_status (obs_complete_multi_part_upload_callback)(const char *location,
  696. const char *bucket,
  697. const char *key,
  698. const char* etag,
  699. void *callback_data);
  700. typedef obs_status (obs_list_parts_callback_ex)(obs_uploaded_parts_total_info* uploaded_parts,
  701. obs_list_parts *parts, void *callback_data);
  702. typedef void (obs_upload_file_callback)(obs_status status, char *result_message, int part_count_return,
  703. obs_upload_file_part_info * upload_info_list, void *callback_data);
  704. typedef obs_status (obs_list_objects_callback)(int is_truncated, const char *next_marker,
  705. int contents_count, const obs_list_objects_content *contents,
  706. int common_prefixes_count, const char **common_prefixes,
  707. void *callback_data);
  708. typedef obs_status (obs_list_multipart_uploads_callback)(int is_truncated, const char *next_marker,
  709. const char *next_uploadId_marker, int uploads_count,
  710. const obs_list_multipart_upload *uploads, int common_prefixes_count,
  711. const char **common_prefixes, void *callback_data);
  712. typedef obs_status (obs_list_versions_callback)(int is_truncated, const char *next_key_marker,
  713. const char *next_versionid_marker, const obs_list_versions *versions,
  714. void *callback_data);
  715. typedef obs_status (get_lifecycle_configuration_callback) (obs_lifecycle_conf* bucket_lifecycle_conf,
  716. unsigned int blcc_number, void *callback_data);
  717. typedef void (obs_download_file_callback)(obs_status status, char *result_message,
  718. int part_count_return, obs_download_file_part_info * download_info_list,
  719. void *callback_data);
  720. typedef obs_status (get_cors_configuration_callback)(obs_bucket_cors_conf* bucket_cors_conf,
  721. unsigned int bcc_number, void *callback_data);
  722. typedef obs_status (obs_delete_object_data_callback)(int contents_count,
  723. obs_delete_objects *contents, void *callback_data);
  724. typedef obs_status (obs_smn_callback)(obs_smn_notification_configuration* notification_conf,
  725. void *callback_data);
  726. /**************************response handler struct**********************************************/
  727. typedef struct obs_response_handler
  728. {
  729. obs_response_properties_callback *properties_callback;
  730. obs_response_complete_callback *complete_callback;
  731. } obs_response_handler;
  732. typedef struct obs_list_objects_handler
  733. {
  734. obs_response_handler response_handler;
  735. obs_list_objects_callback *list_Objects_callback;
  736. } obs_list_objects_handler;
  737. typedef struct obs_list_versions_handler
  738. {
  739. obs_response_handler response_handler;
  740. obs_list_versions_callback *list_versions_callback;
  741. } obs_list_versions_handler;
  742. typedef struct obs_list_multipart_uploads_handler
  743. {
  744. obs_response_handler response_handler;
  745. obs_list_multipart_uploads_callback *list_mulpu_callback;
  746. } obs_list_multipart_uploads_handler;
  747. typedef struct obs_put_object_handler
  748. {
  749. obs_response_handler response_handler;
  750. obs_put_object_data_callback *put_object_data_callback;
  751. } obs_put_object_handler;
  752. typedef struct obs_append_object_handler
  753. {
  754. obs_response_handler response_handler;
  755. obs_append_object_data_callback *append_object_data_callback;
  756. } obs_append_object_handler;
  757. typedef struct obs_modify_object_handler
  758. {
  759. obs_response_handler response_handler;
  760. obs_modify_object_data_callback *modify_object_data_callback;
  761. } obs_modify_object_handler;
  762. typedef struct obs_get_object_handler
  763. {
  764. obs_response_handler response_handler;
  765. obs_get_object_data_callback *get_object_data_callback;
  766. } obs_get_object_handler;
  767. typedef struct obs_lifecycle_handler
  768. {
  769. obs_response_handler response_handler;
  770. get_lifecycle_configuration_callback *get_lifecycle_callback;
  771. } obs_lifecycle_handler;
  772. typedef struct obs_cors_handler
  773. {
  774. obs_response_handler response_handler;
  775. get_cors_configuration_callback *get_cors_callback;
  776. } obs_cors_handler;
  777. typedef struct obs_upload_handler
  778. {
  779. obs_response_handler response_handler;
  780. obs_upload_data_callback *upload_data_callback;
  781. } obs_upload_handler;
  782. typedef struct obs_complete_multi_part_upload_handler
  783. {
  784. obs_response_handler response_handler;
  785. obs_complete_multi_part_upload_callback *complete_multipart_upload_callback;
  786. } obs_complete_multi_part_upload_handler;
  787. typedef struct obs_list_parts_handler
  788. {
  789. obs_response_handler response_handler;
  790. obs_list_parts_callback_ex *list_parts_callback_ex;
  791. } obs_list_parts_handler;
  792. typedef struct obs_upload_file_response_handler
  793. {
  794. obs_response_handler response_handler;
  795. obs_upload_file_callback *upload_file_callback;
  796. } obs_upload_file_response_handler;
  797. typedef struct __obs_download_file_response_handler
  798. {
  799. obs_response_handler response_handler;
  800. obs_download_file_callback *download_file_callback;
  801. }obs_download_file_response_handler;
  802. typedef struct obs_delete_object_handler
  803. {
  804. obs_response_handler response_handler;
  805. obs_delete_object_data_callback *delete_object_data_callback;
  806. } obs_delete_object_handler;
  807. typedef struct obs_get_bucket_websiteconf_handler
  808. {
  809. obs_response_handler response_handler;
  810. obs_get_bucket_websiteconf_callback *get_bucket_website_conf_callback;
  811. } obs_get_bucket_websiteconf_handler;
  812. typedef struct obs_smn_handler
  813. {
  814. obs_response_handler response_handler;
  815. obs_smn_callback *get_smn_callback_func;
  816. }obs_smn_handler;
  817. /**************************return struct*******************************************/
  818. typedef struct obs_bucket_context
  819. {
  820. char *host_name;
  821. char *bucket_name;
  822. obs_protocol protocol;
  823. obs_uri_style uri_style;
  824. char *access_key;
  825. char *secret_access_key;
  826. char *certificate_info;
  827. obs_storage_class storage_class;
  828. char * token;
  829. char * epid;
  830. obs_bucket_type bucket_type;
  831. obs_bucket_list_type bucket_list_type;
  832. } obs_bucket_context;
  833. typedef enum
  834. {
  835. OBS_HTTP2_OPEN = 0,
  836. OBS_HTTP2_CLOSE = 1
  837. } obs_http2_switch;
  838. typedef enum
  839. {
  840. OBS_BBR_OPEN = 0,
  841. OBS_BBR_CLOSE = 1
  842. } obs_bbr_switch;
  843. typedef enum
  844. {
  845. OBS_OPENSSL_CLOSE =0,
  846. OBS_OPENSSL_OPEN = 1
  847. } obs_openssl_switch;
  848. typedef enum
  849. {
  850. OBS_NEGOTIATION_TYPE =0,
  851. OBS_OBS_TYPE =1,
  852. OBS_S3_TYPE =2
  853. }obs_auth_switch;
  854. typedef enum
  855. {
  856. OBS_NO_METADATA_ACTION =0,
  857. OBS_REPLACE =1,
  858. OBS_REPLACE_NEW =2
  859. }metadata_action_indicator;
  860. typedef struct obs_http_request_option
  861. {
  862. int speed_limit;
  863. int speed_time;
  864. int connect_time;
  865. int max_connected_time;
  866. char *proxy_host;
  867. char *proxy_auth;
  868. char *ssl_cipher_list;
  869. obs_http2_switch http2_switch;
  870. obs_bbr_switch bbr_switch;
  871. obs_auth_switch auth_switch;
  872. long buffer_size;
  873. } obs_http_request_option;
  874. typedef struct temp_auth_configure
  875. {
  876. long long int expires;
  877. void (* temp_auth_callback)(char * temp_auth_url,char * temp_auth_headers,void *callback_data);
  878. void * callback_data;
  879. }temp_auth_configure;
  880. typedef struct obs_options
  881. {
  882. obs_bucket_context bucket_options;
  883. obs_http_request_option request_options;
  884. temp_auth_configure *temp_auth;
  885. } obs_options;
  886. typedef struct image_process_configure
  887. {
  888. image_process_mode image_process_mode;
  889. char * cmds_stylename;
  890. }image_process_configure;
  891. typedef struct obs_get_conditions
  892. {
  893. uint64_t start_byte;
  894. uint64_t byte_count;
  895. int64_t if_modified_since;
  896. int64_t if_not_modified_since;
  897. char *if_match_etag;
  898. char *if_not_match_etag;
  899. image_process_configure * image_process_config;
  900. } obs_get_conditions;
  901. typedef struct file_object_config
  902. {
  903. int auto_split;
  904. char * file_name;
  905. void (*print_process_callback)(uint64_t remain_bytes, int progress_rate);
  906. }file_object_config;
  907. typedef struct grant_domain_config
  908. {
  909. char *domain;
  910. obs_grant_domain grant_domain;
  911. }grant_domain_config;
  912. typedef struct obs_put_properties
  913. {
  914. char *content_type;
  915. char *md5;
  916. char *cache_control;
  917. char *content_disposition_filename;
  918. char *content_encoding;
  919. char *website_redirect_location;
  920. obs_get_conditions *get_conditions;
  921. uint64_t start_byte;
  922. uint64_t byte_count;
  923. int64_t expires;
  924. obs_canned_acl canned_acl;
  925. obs_az_redundancy az_redundancy;
  926. grant_domain_config *domain_config;
  927. int meta_data_count;
  928. obs_name_value *meta_data;
  929. file_object_config * file_object_config;
  930. metadata_action_indicator metadata_action;
  931. } obs_put_properties;
  932. typedef struct server_side_encryption_params
  933. {
  934. obs_encryption_type encryption_type;
  935. char *kms_server_side_encryption;
  936. char *kms_key_id;
  937. char *ssec_customer_algorithm;
  938. char *ssec_customer_key;
  939. char *des_ssec_customer_algorithm;
  940. char *des_ssec_customer_key;
  941. }server_side_encryption_params;
  942. typedef obs_status (obs_get_bucket_storage_policy_callback)(const char * storage_class_policy,
  943. void *callback_data);
  944. typedef struct obs_get_bucket_storage_class_handler
  945. {
  946. obs_response_handler response_handler;
  947. obs_get_bucket_storage_policy_callback *get_bucket_sorage_class_callback;
  948. }obs_get_bucket_storage_class_handler;
  949. typedef obs_status (obs_get_bucket_tagging_callback)(int tagging_count,
  950. obs_name_value *tagging_list, void *callback_data);
  951. typedef struct obs_get_bucket_tagging_handler
  952. {
  953. obs_response_handler response_handler;
  954. obs_get_bucket_tagging_callback *get_bucket_tagging_callback;
  955. }obs_get_bucket_tagging_handler;
  956. typedef struct obs_list_service_handler
  957. {
  958. obs_response_handler response_handler;
  959. obs_list_service_callback *listServiceCallback;
  960. } obs_list_service_handler;
  961. typedef struct obs_list_service_obs_handler
  962. {
  963. obs_response_handler response_handler;
  964. obs_list_service_obs_callback *listServiceCallback;
  965. } obs_list_service_obs_handler;
  966. typedef struct bucket_logging_message
  967. {
  968. char *target_bucket;
  969. int target_bucket_size;
  970. char *target_prefix;
  971. int target_prefix_size;
  972. obs_acl_grant *acl_grants;
  973. int *acl_grant_count;
  974. char *agency;
  975. int agency_size;
  976. }bucket_logging_message;
  977. /****************************init handle *****************************************************/
  978. eSDK_OBS_API obs_status obs_initialize(int win32_flags);
  979. eSDK_OBS_API void obs_deinitialize();
  980. eSDK_OBS_API void init_obs_options(obs_options * options);
  981. eSDK_OBS_API int obs_status_is_retryable(obs_status status);
  982. eSDK_OBS_API obs_status set_online_request_max_count(uint32_t online_request_max);
  983. eSDK_OBS_API obs_status init_certificate_by_path(obs_protocol protocol,
  984. obs_certificate_conf ca_conf, const char *path, int path_length);
  985. eSDK_OBS_API obs_status init_certificate_by_buffer(const char *buffer, int buffer_length);
  986. /*************************************bucket handle**************************************/
  987. eSDK_OBS_API void create_bucket(const obs_options *options, obs_canned_acl canned_acl,
  988. const char *location_constraint, obs_response_handler *handler, void *callback_data);
  989. eSDK_OBS_API void create_bucket_with_params(const obs_options *options, const obs_create_bucket_params *param,
  990. obs_response_handler *handler, void *callback_data);
  991. eSDK_OBS_API void create_pfs_bucket(const obs_options *options, obs_canned_acl canned_acl,
  992. const char *location_constraint, obs_response_handler *handler,
  993. void *callback_data);
  994. eSDK_OBS_API void list_bucket(const obs_options *options, obs_list_service_handler *handler,
  995. void *callback_data);
  996. eSDK_OBS_API void list_bucket_obs(const obs_options *options, obs_list_service_obs_handler *handler,
  997. void *callback_data);
  998. eSDK_OBS_API void delete_bucket(const obs_options *options, obs_response_handler *handler, void *callback_data);
  999. eSDK_OBS_API void list_bucket_objects(const obs_options *options, const char *prefix, const char *marker, const char *delimiter,
  1000. int maxkeys, obs_list_objects_handler *handler, void *callback_data);
  1001. // only object bucket can use
  1002. eSDK_OBS_API void list_versions(const obs_options *options, const char *prefix, const char *key_marker, const char *delimiter,
  1003. int maxkeys, const char *version_id_marker, obs_list_versions_handler *handler, void *callback_data);
  1004. eSDK_OBS_API void set_bucket_quota(const obs_options *options, uint64_t storage_quota,
  1005. obs_response_handler *handler, void *callback_data);
  1006. eSDK_OBS_API void get_bucket_quota(const obs_options *options, uint64_t *storagequota_return,
  1007. obs_response_handler *handler, void *callback_data);
  1008. eSDK_OBS_API void set_bucket_policy(const obs_options *options, const char *policy,
  1009. obs_response_handler *handler, void *callback_data);
  1010. eSDK_OBS_API void get_bucket_policy(const obs_options *options, int policy_return_size,
  1011. char *policy_return, obs_response_handler *handler,
  1012. void *callback_data);
  1013. eSDK_OBS_API void delete_bucket_policy(const obs_options *options, obs_response_handler *handler,
  1014. void *callback_data);
  1015. eSDK_OBS_API void set_bucket_version_configuration(const obs_options *options, const char *version_status,
  1016. obs_response_handler *handler, void *callback_data);
  1017. eSDK_OBS_API void get_bucket_version_configuration(const obs_options *options, int status_return_size,
  1018. char *status_return, obs_response_handler *handler, void *callback_data);
  1019. eSDK_OBS_API void set_bucket_storage_class_policy(const obs_options *options,
  1020. obs_storage_class storage_class_policy, obs_response_handler *handler, void *callback_data);
  1021. eSDK_OBS_API void get_bucket_storage_class_policy(const obs_options *options,
  1022. obs_get_bucket_storage_class_handler *handler, void *callback_data);
  1023. eSDK_OBS_API void set_bucket_tagging(const obs_options *options,obs_name_value * tagging_list,
  1024. unsigned int number, obs_response_handler *handler, void *callback_data);
  1025. eSDK_OBS_API void get_bucket_tagging(const obs_options *options, obs_get_bucket_tagging_handler *handler,
  1026. void *callback_data);
  1027. eSDK_OBS_API void delete_bucket_tagging(const obs_options *options, obs_response_handler *handler,
  1028. void *callback_data);
  1029. eSDK_OBS_API void set_bucket_logging_configuration(const obs_options *options, char *target_bucket, char *target_prefix,
  1030. obs_acl_group *acl_group, obs_response_handler *handler, void *callback_data);
  1031. eSDK_OBS_API void set_bucket_logging_configuration_obs(const obs_options *options, char *target_bucket, char *target_prefix, char *agency,
  1032. obs_acl_group *acl_group, obs_response_handler *handler, void *callback_data);
  1033. eSDK_OBS_API void get_bucket_logging_configuration(const obs_options *options, obs_response_handler *handler,
  1034. bucket_logging_message *logging_message_data, void *callback_data);
  1035. // only object bucket can use
  1036. eSDK_OBS_API void set_bucket_website_configuration(const obs_options *options,
  1037. obs_set_bucket_redirect_all_conf *set_bucket_redirect_all,
  1038. obs_set_bucket_website_conf *set_bucket_website_conf,
  1039. obs_response_handler *handler, void *callback_data);
  1040. // only object bucket can use
  1041. eSDK_OBS_API void get_bucket_website_configuration(const obs_options *options,
  1042. obs_get_bucket_websiteconf_handler *handler,
  1043. void *callback_data);
  1044. // only object bucket can use
  1045. eSDK_OBS_API void delete_bucket_website_configuration(const obs_options *options,
  1046. obs_response_handler *handler, void *callback_data);
  1047. eSDK_OBS_API void get_bucket_storage_info(const obs_options *options, int capacity_length, char *capacity,
  1048. int object_number_length, char *object_number,
  1049. obs_response_handler *handler, void *callback_data);
  1050. eSDK_OBS_API void list_multipart_uploads(const obs_options *options, const char *prefix, const char *marker, const char *delimiter,
  1051. const char* uploadid_marke, int max_uploads, obs_list_multipart_uploads_handler *handler,
  1052. void *callback_data);
  1053. eSDK_OBS_API void set_bucket_lifecycle_configuration(const obs_options *options,
  1054. obs_lifecycle_conf* bucket_lifecycle_conf, unsigned int blcc_number,
  1055. obs_response_handler *handler, void *callback_data);
  1056. eSDK_OBS_API void get_bucket_lifecycle_configuration(const obs_options *options,
  1057. obs_lifecycle_handler *handler, void *callback_data);
  1058. eSDK_OBS_API void delete_bucket_lifecycle_configuration(const obs_options *options,
  1059. obs_response_handler *handler, void *callback_data);
  1060. // only object bucket can use
  1061. eSDK_OBS_API void set_bucket_cors_configuration(const obs_options *options, obs_bucket_cors_conf *obs_cors_conf_info,
  1062. unsigned int conf_num, obs_response_handler *handler, void *callback_data);
  1063. // only object bucket can use
  1064. eSDK_OBS_API void get_bucket_cors_configuration(const obs_options *options, obs_cors_handler *handler,
  1065. void *callback_data);
  1066. // only object bucket can use
  1067. eSDK_OBS_API void delete_bucket_cors_configuration(const obs_options *options,
  1068. obs_response_handler *handler, void *callback_data);
  1069. eSDK_OBS_API void set_notification_configuration(const obs_options *options,
  1070. obs_smn_notification_configuration* notification_conf, obs_response_handler *handler,
  1071. void *callback_data);
  1072. eSDK_OBS_API void get_notification_configuration(const obs_options *options,
  1073. obs_smn_handler *handler, void *callback_data);
  1074. eSDK_OBS_API void set_bucket_acl(const obs_options * options, manager_acl_info * aclinfo,
  1075. obs_response_handler * handler, void *callback_data);
  1076. eSDK_OBS_API void set_bucket_acl_by_head(const obs_options * options, obs_canned_acl canned_acl,
  1077. obs_response_handler * handler, void *callback_data);
  1078. eSDK_OBS_API void get_bucket_acl(const obs_options * options, manager_acl_info * aclinfo,
  1079. obs_response_handler * handler, void *callback_data);
  1080. eSDK_OBS_API void obs_options_bucket(const obs_options *options, char* origin,
  1081. char (*request_method)[OBS_COMMON_LEN_256], unsigned int method_number,
  1082. char (*request_header)[OBS_COMMON_LEN_256], unsigned int header_number,
  1083. obs_response_handler *handler, void *callback_data);
  1084. eSDK_OBS_API void get_bucket_metadata_with_corsconf(const obs_options *options, char *origin,
  1085. char (*requestHeader)[OBS_COMMON_LEN_256], unsigned int number,
  1086. obs_response_handler *handler);
  1087. eSDK_OBS_API void obs_head_bucket(const obs_options *options, obs_response_handler *handler,
  1088. void *callback_data);
  1089. /*************************************object handle*************************************/
  1090. eSDK_OBS_API void get_object_metadata(const obs_options *options, obs_object_info *object_info,
  1091. server_side_encryption_params *encryption_params,
  1092. obs_response_handler *handler, void *callback_data);
  1093. eSDK_OBS_API void set_object_metadata(const obs_options *options, obs_object_info *object_info,
  1094. obs_put_properties *put_properties,
  1095. server_side_encryption_params *encryption_params,
  1096. obs_response_handler *handler, void *callback_data);
  1097. eSDK_OBS_API void put_object(const obs_options *options, char *key, uint64_t content_length,
  1098. obs_put_properties *put_properties,
  1099. server_side_encryption_params *encryption_params,
  1100. obs_put_object_handler *handler, void *callback_data);
  1101. eSDK_OBS_API void init_get_properties(obs_get_conditions *get_conditions);
  1102. eSDK_OBS_API void get_object(const obs_options *options, obs_object_info *object_info,
  1103. obs_get_conditions *get_conditions,
  1104. server_side_encryption_params *encryption_params,
  1105. obs_get_object_handler *handler, void *callback_data);
  1106. eSDK_OBS_API void delete_object(const obs_options *options, obs_object_info *object_info,
  1107. obs_response_handler *handler, void *callback_data);
  1108. eSDK_OBS_API const char *obs_get_status_name(obs_status status);
  1109. eSDK_OBS_API obs_status obs_create_request_context(obs_request_context **request_context_return);
  1110. eSDK_OBS_API void obs_destroy_request_context(obs_request_context *request_context);
  1111. eSDK_OBS_API obs_status obs_runall_request_context(obs_request_context *request_context);
  1112. eSDK_OBS_API void obs_head_object(const obs_options *options, char *key,
  1113. obs_response_handler *handler, void *callback_data);
  1114. eSDK_OBS_API void init_put_properties(obs_put_properties *put_properties);
  1115. eSDK_OBS_API void upload_part(const obs_options *options, char *key, obs_upload_part_info *upload_part_info,
  1116. uint64_t content_length, obs_put_properties *put_properties,
  1117. server_side_encryption_params *encryption_params,
  1118. obs_upload_handler *handler, void *callback_data);
  1119. eSDK_OBS_API void initiate_multi_part_upload(const obs_options *options, char *key,int upload_id_return_size,
  1120. char *upload_id_return, obs_put_properties *put_properties,
  1121. server_side_encryption_params *encryption_params,
  1122. obs_response_handler *handler, void *callback_data);
  1123. eSDK_OBS_API void complete_multi_part_upload(const obs_options *options, char *key, const char *upload_id, unsigned int part_number,
  1124. obs_complete_upload_Info *complete_upload_Info,obs_put_properties *put_properties,
  1125. obs_complete_multi_part_upload_handler *handler, void *callback_data);
  1126. eSDK_OBS_API void list_parts (const obs_options *options, char *key, list_part_info *listpart,
  1127. obs_list_parts_handler *handler, void *callback_data);
  1128. eSDK_OBS_API void abort_multi_part_upload(const obs_options *options, char *key, const char *upload_id,
  1129. obs_response_handler *handler, void *callback_data);
  1130. eSDK_OBS_API void copy_object(const obs_options *options, char *key, const char *version_id, obs_copy_destination_object_info *object_info,
  1131. unsigned int is_copy, obs_put_properties *put_properties, server_side_encryption_params *encryption_params,
  1132. obs_response_handler *handler, void *callback_data);
  1133. eSDK_OBS_API void copy_part(const obs_options *options, char *key, obs_copy_destination_object_info *object_info,
  1134. obs_upload_part_info *copypart, obs_put_properties *put_properties,
  1135. server_side_encryption_params *encryption_params,obs_response_handler *handler, void *callback_data);
  1136. eSDK_OBS_API void restore_object(const obs_options *options, obs_object_info *object_info, const char *days,
  1137. obs_tier tier,const obs_response_handler *handler, void *callback_data);
  1138. eSDK_OBS_API void obs_options_object(const obs_options *options, char* key, char* origin,
  1139. char (*request_method)[OBS_COMMON_LEN_256], unsigned int method_number,
  1140. char (*request_header)[OBS_COMMON_LEN_256], unsigned int header_number,
  1141. obs_response_handler *handler, void *callback_data);
  1142. eSDK_OBS_API void initialize_break_point_lock();
  1143. eSDK_OBS_API void deinitialize_break_point_lock();
  1144. eSDK_OBS_API void upload_file(const obs_options *options, char *key, server_side_encryption_params *encryption_params,
  1145. obs_upload_file_configuration *upload_file_config, obs_upload_file_response_handler *handler,
  1146. void *callback_data);
  1147. eSDK_OBS_API void download_file(const obs_options *options, char *key, char* version_id, obs_get_conditions *get_conditions,
  1148. server_side_encryption_params *encryption_params,
  1149. obs_download_file_configuration * download_file_config,
  1150. obs_download_file_response_handler *handler, void *callback_data);
  1151. eSDK_OBS_API void batch_delete_objects(const obs_options *options, obs_object_info *object_info,obs_delete_object_info *delobj,
  1152. obs_put_properties *put_properties, obs_delete_object_handler *handler, void *callback_data);
  1153. eSDK_OBS_API void get_object_acl(const obs_options *options, manager_acl_info *aclinfo,
  1154. obs_response_handler *handler, void *callback_data);
  1155. eSDK_OBS_API void set_object_acl(const obs_options *options, manager_acl_info *aclinfo,
  1156. obs_response_handler *handler, void *callback_data);
  1157. eSDK_OBS_API void set_object_acl_by_head(const obs_options *options, obs_object_info *object_info, obs_canned_acl canned_acl,
  1158. obs_response_handler *handler, void *callback_data);
  1159. // only object bucket can use Modify_object
  1160. eSDK_OBS_API void append_object(const obs_options *options, char *key, uint64_t content_length, const char * position,
  1161. obs_put_properties *put_properties,server_side_encryption_params *encryption_params,
  1162. obs_append_object_handler *handler, void *callback_data);
  1163. // only pfs bucket can use Modify_object
  1164. eSDK_OBS_API void modify_object(const obs_options *options, char *key, uint64_t content_length, uint64_t position,
  1165. obs_put_properties *put_properties,server_side_encryption_params *encryption_params,
  1166. obs_modify_object_handler *handler, void *callback_data);
  1167. // only pfs bucket can use truncate_object
  1168. eSDK_OBS_API void truncate_object(const obs_options *options, char *key, uint64_t object_length,
  1169. obs_response_handler *handler, void *callback_data);
  1170. // only pfs bucket can use rename_object
  1171. eSDK_OBS_API void rename_object(const obs_options *options, char *key, char *new_object_name,
  1172. obs_response_handler *handler, void *callback_data);
  1173. eSDK_OBS_API void compute_md5(const char *buffer, int64_t buffer_size, char *outbuffer, int64_t max_out_put_buffer_size);
  1174. eSDK_OBS_API int set_obs_log_path(const char *log_path);
  1175. eSDK_OBS_API void set_openssl_callback(obs_openssl_switch switch_flag);
  1176. /*************************************封装上传下载接口*************************************/
  1177. /*
  1178. 首先,接入OBS须拥有一组有效的访问密钥(AK和SK)
  1179. 上传下载文件对象前,需创建“桶”,当作对象存储的容器,桶名称须确保全局唯一
  1180. */
  1181. // 创建桶(权限限制,暂时请勿调用)
  1182. eSDK_OBS_API bool HWCloud_CreateBucket(char * bucketName, obs_storage_class eStorage, obs_protocol eProtocol);
  1183. // 删除桶(权限限制,暂时请勿调用)
  1184. eSDK_OBS_API bool HWCloud_DeleteBucket(char * bucketName);
  1185. // 初始化,expires为临时访问Url(可直接在网页中打开下载)的访问时限参数(单位:s)
  1186. eSDK_OBS_API void HWCloud_Init(char * hostName, char * accessKey, char * SecretKey, char * bucketName, long long int expires = 0);
  1187. // 上传文件
  1188. eSDK_OBS_API bool HWCloud_UploadFile(char * key, char * filename, char * bucketName);
  1189. // 上传文件&返回临时访问Url(可直接在网页中打开下载,访问时限由参数:expires决定,单位:s)
  1190. eSDK_OBS_API char * HWCloud_GenerateFileUrl(char * key, char * filename, char * bucketName, long long int expires);
  1191. // 上传文件&返回临时访问Url,也可返回错误信息ret
  1192. eSDK_OBS_API bool HWCloud_PutFromFile(char* object_name, char* file_path, char url[], char ret[]);
  1193. // 下载文件
  1194. eSDK_OBS_API bool HWCloud_DownloadFile(char *filename, char * key, char * bucketName);
  1195. // 输出错误日志
  1196. eSDK_OBS_API void HWCloud_PrintErrorInfo();
  1197. //配置参数
  1198. static int m_nShowResponsePropertiesG = 1;
  1199. static char errorDetailsG[4096] = { 0 };
  1200. static obs_status m_nStatusG = OBS_STATUS_OK;
  1201. static char ACCESS_KEY_ID[2048] = { 0 };
  1202. static char SECRET_ACCESS_KEY[2048] = { 0 };
  1203. static char HOST_NAME[2048] = { 0 };
  1204. static char BUCKET_NAME[2048] = { 0 };
  1205. static char UPLOAD_ID[2048] = { 0 };
  1206. static char TMP_ACCESS_URL[1024] = { 0 };
  1207. static long long int FILE_URL_EXPIRES = 5184000;
  1208. #ifdef __cplusplus
  1209. }
  1210. #endif
  1211. #endif /* LIBOBS_H */