libs3  trunk
libs3.h
Go to the documentation of this file.
1 
33 #ifndef LIBS3_H
34 #define LIBS3_H
35 
36 #include <stdint.h>
37 #include <sys/select.h>
38 
39 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 
130 #define S3_MAX_HOSTNAME_SIZE 255
131 
135 #define S3_DEFAULT_HOSTNAME "s3.amazonaws.com"
136 
137 
142 #define S3_MAX_BUCKET_NAME_SIZE 255
143 
147 #define S3_MAX_KEY_SIZE 1024
148 
149 
154 #define S3_MAX_METADATA_SIZE 2048
155 
156 
160 #define S3_METADATA_HEADER_NAME_PREFIX "x-amz-meta-"
161 
162 
170 #define S3_MAX_METADATA_COUNT \
171  (S3_MAX_METADATA_SIZE / (sizeof(S3_METADATA_HEADER_NAME_PREFIX "nv") - 1))
172 
173 
179 #define S3_MAX_ACL_GRANT_COUNT 100
180 
181 
186 #define S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE 128
187 
188 
193 #define S3_MAX_GRANTEE_USER_ID_SIZE 128
194 
195 
200 #define S3_MAX_GRANTEE_DISPLAY_NAME_SIZE 128
201 
202 
208 #define S3_MAX_AUTHENTICATED_QUERY_STRING_SIZE \
209  (sizeof("https:
210  sizeof("?AWSAccessKeyId=") + 32 + sizeof("&Expires=") + 32 + \
211  sizeof("&Signature=") + 28 + 1)
212 
213 
219 #define S3_INIT_WINSOCK 1
220 
227 #define S3_INIT_VERIFY_PEER 2
228 
229 
234 #define S3_INIT_ALL (S3_INIT_WINSOCK)
235 
236 
240 #define S3_DEFAULT_REGION "us-east-1"
241 
242 
252 typedef enum
253 {
255 
308 
392 
403 } S3Status;
404 
405 
416 typedef enum
417 {
420 } S3Protocol;
421 
422 
435 typedef enum
436 {
439 } S3UriStyle;
440 
441 
454 typedef enum
455 {
461 } S3GranteeType;
462 
463 
479 typedef enum
480 {
486 } S3Permission;
487 
488 
502 typedef enum
503 {
504  S3CannedAclPrivate = 0, /* private */
505  S3CannedAclPublicRead = 1, /* public-read */
506  S3CannedAclPublicReadWrite = 2, /* public-read-write */
507  S3CannedAclAuthenticatedRead = 3, /* authenticated-read */
508  S3CannedAclBucketOwnerFullControl = 4 /* bucket-owner-full-control */
509 } S3CannedAcl;
510 
511 
521 
522 
527 typedef struct S3NameValue
528 {
532  const char *name;
533 
537  const char *value;
538 } S3NameValue;
539 
540 
547 typedef struct S3ResponseProperties
548 {
553  const char *requestId;
554 
559  const char *requestId2;
560 
566  const char *contentType;
567 
575  uint64_t contentLength;
576 
580  const char *server;
581 
588  const char *eTag;
589 
598  int64_t lastModified;
599 
605 
613 
626 
627 
634 typedef struct S3AclGrant
635 {
649  union
650  {
655  struct
656  {
667  struct
668  {
677  } canonicalUser;
678  } grantee;
683 } S3AclGrant;
684 
685 
692 typedef struct S3BucketContext
693 {
698  const char *hostName;
699 
703  const char *bucketName;
704 
709 
715 
719  const char *accessKeyId;
720 
724  const char *secretAccessKey;
725 
729  const char *securityToken;
730 
735  const char *authRegion;
737 
738 
744 typedef struct S3ListBucketContent
745 {
749  const char *key;
750 
755  int64_t lastModified;
756 
761  const char *eTag;
762 
766  uint64_t size;
767 
772  const char *ownerId;
773 
778  const char *ownerDisplayName;
780 
781 
787 typedef struct S3ListMultipartUpload
788 {
792  const char *key;
793 
794  const char *uploadId;
795  const char *initiatorId;
796  const char *initiatorDisplayName;
797 
802  const char *ownerId;
803 
808  const char *ownerDisplayName;
809 
810  const char *storageClass;
811 
816  int64_t initiated;
817 
819 
820 
821 typedef struct S3ListPart
822 {
823  const char *eTag;
824 
829  int64_t lastModified;
830  uint64_t partNumber;
831  uint64_t size;
832 } S3ListPart;
833 
834 
840 typedef struct S3PutProperties
841 {
846  const char *contentType;
847 
853  const char *md5;
854 
859  const char *cacheControl;
860 
869 
875  const char *contentEncoding;
876 
882  int64_t expires;
883 
889 
894 
901 
917 
918 
923 typedef struct S3GetConditions
924 {
932 
940 
947  const char *ifMatchETag;
948 
955  const char *ifNotMatchETag;
957 
958 
964 typedef struct S3ErrorDetails
965 {
970  const char *message;
971 
975  const char *resource;
976 
981  const char *furtherDetails;
982 
988 
996 
997 
1016  (const S3ResponseProperties *properties, void *callbackData);
1017 
1018 
1035 typedef void (S3ResponseCompleteCallback)(S3Status status,
1036  const S3ErrorDetails *errorDetails,
1037  void *callbackData);
1038 
1039 
1058 typedef S3Status (S3ListServiceCallback)(const char *ownerId,
1059  const char *ownerDisplayName,
1060  const char *bucketName,
1061  int64_t creationDateSeconds,
1062  void *callbackData);
1063 
1064 
1095 typedef S3Status (S3ListBucketCallback)(int isTruncated,
1096  const char *nextMarker,
1097  int contentsCount,
1098  const S3ListBucketContent *contents,
1099  int commonPrefixesCount,
1100  const char **commonPrefixes,
1101  void *callbackData);
1102 
1103 
1122 typedef int (S3PutObjectDataCallback)(int bufferSize, char *buffer,
1123  void *callbackData);
1124 
1125 
1144 typedef S3Status (S3GetObjectDataCallback)(int bufferSize, const char *buffer,
1145  void *callbackData);
1146 
1147 
1165 typedef S3Status (S3MultipartInitialResponseCallback)(const char *upload_id,
1166  void *callbackData);
1167 
1168 
1193  (int isTruncated, const char *nextKeyMarker,
1194  const char *nextUploadIdMarker, int uploadsCount,
1195  const S3ListMultipartUpload *uploads, int commonPrefixesCount,
1196  const char **commonPrefixes, void *callbackData);
1197 
1198 
1222  (int isTruncated, const char *nextPartNumberMarker,
1223  const char *initiatorId, const char *initiatorDisplayName,
1224  const char *ownerId, const char *ownerDisplayName,
1225  const char *storageClass, int partsCount, int lastPartNumber,
1226  const S3ListPart *parts, void *callbackData);
1227 
1228 
1245 typedef S3Status (S3MultipartCommitResponseCallback)(const char *location,
1246  const char *etag,
1247  void *callbackData);
1248 
1249 
1268 typedef S3Status (*S3SetupCurlCallback)(void *curlMulti, void *curlEasy,
1269  void *setupData);
1270 
1271 
1281 typedef struct S3ResponseHandler
1282 {
1289 
1298 
1299 
1304 typedef struct S3ListServiceHandler
1305 {
1310 
1317 
1318 
1323 typedef struct S3ListBucketHandler
1324 {
1329 
1338 
1339 
1344 typedef struct S3PutObjectHandler
1345 {
1350 
1359 
1360 
1365 typedef struct S3GetObjectHandler
1366 {
1371 
1381 
1382 
1388 
1391 
1393 {
1398 
1408 
1410 {
1415 
1418 
1419 typedef struct S3ListPartsHandler
1420 {
1425 
1428 
1430 {
1435 
1437 
1480 S3Status S3_initialize(const char *userAgentInfo, int flags,
1481  const char *defaultS3HostName);
1482 
1483 
1489 void S3_deinitialize();
1490 
1491 
1498 const char *S3_get_status_name(S3Status status);
1499 
1500 
1544 S3Status S3_validate_bucket_name(const char *bucketName, S3UriStyle uriStyle);
1545 
1546 
1573 S3Status S3_convert_acl(char *aclXml, char *ownerId, char *ownerDisplayName,
1574  int *aclGrantCountReturn, S3AclGrant *aclGrants);
1575 
1576 
1587 int S3_status_is_retryable(S3Status status);
1588 
1589 
1612 S3Status S3_create_request_context(S3RequestContext **requestContextReturn);
1613 
1614 
1655  void *curlMulti,
1656  S3SetupCurlCallback setupCurlCallback,
1657  void *setupCurlCallbackData);
1658 
1659 
1668 void S3_destroy_request_context(S3RequestContext *requestContext);
1669 
1670 
1689 
1690 
1714  int *requestsRemainingReturn);
1715 
1716 
1735 
1736 
1768  fd_set *readFdSet, fd_set *writeFdSet,
1769  fd_set *exceptFdSet, int *maxFd);
1770 
1771 
1786 int64_t S3_get_request_context_timeout(S3RequestContext *requestContext);
1787 
1799  int verifyPeer);
1800 
1801 
1834  (char *buffer, const S3BucketContext *bucketContext,
1835  const char *key, int expires, const char *resource,
1836  const char *httpMethod);
1837 
1838 
1865 void S3_list_service(S3Protocol protocol, const char *accessKeyId,
1866  const char *secretAccessKey, const char *securityToken,
1867  const char *hostName, const char *authRegion,
1868  S3RequestContext *requestContext,
1869  int timeoutMs,
1870  const S3ListServiceHandler *handler, void *callbackData);
1871 
1872 
1910 void S3_test_bucket(S3Protocol protocol, S3UriStyle uriStyle,
1911  const char *accessKeyId, const char *secretAccessKey,
1912  const char *securityToken, const char *hostName,
1913  const char *bucketName, const char *authRegion,
1914  int locationConstraintReturnSize,
1915  char *locationConstraintReturn,
1916  S3RequestContext *requestContext,
1917  int timeoutMs,
1918  const S3ResponseHandler *handler, void *callbackData);
1919 
1920 
1947 void S3_create_bucket(S3Protocol protocol, const char *accessKeyId,
1948  const char *secretAccessKey, const char *securityToken,
1949  const char *hostName, const char *bucketName,
1950  const char *authRegion, S3CannedAcl cannedAcl,
1951  const char *locationConstraint,
1952  S3RequestContext *requestContext,
1953  int timeoutMs,
1954  const S3ResponseHandler *handler, void *callbackData);
1955 
1956 
1982 void S3_delete_bucket(S3Protocol protocol, S3UriStyle uriStyle,
1983  const char *accessKeyId, const char *secretAccessKey,
1984  const char *securityToken, const char *hostName,
1985  const char *bucketName, const char *authRegion,
1986  S3RequestContext *requestContext,
1987  int timeoutMs,
1988  const S3ResponseHandler *handler, void *callbackData);
1989 
1990 
2012 void S3_list_bucket(const S3BucketContext *bucketContext,
2013  const char *prefix, const char *marker,
2014  const char *delimiter, int maxkeys,
2015  S3RequestContext *requestContext,
2016  int timeoutMs,
2017  const S3ListBucketHandler *handler, void *callbackData);
2018 
2019 
2045 void S3_put_object(const S3BucketContext *bucketContext, const char *key,
2046  uint64_t contentLength,
2047  const S3PutProperties *putProperties,
2048  S3RequestContext *requestContext,
2049  int timeoutMs,
2050  const S3PutObjectHandler *handler, void *callbackData);
2051 
2052 
2088 void S3_copy_object(const S3BucketContext *bucketContext,
2089  const char *key, const char *destinationBucket,
2090  const char *destinationKey,
2091  const S3PutProperties *putProperties,
2092  int64_t *lastModifiedReturn, int eTagReturnSize,
2093  char *eTagReturn, S3RequestContext *requestContext,
2094  int timeoutMs,
2095  const S3ResponseHandler *handler, void *callbackData);
2096 
2097 
2139 void S3_copy_object_range(const S3BucketContext *bucketContext,
2140  const char *key, const char *destinationBucket,
2141  const char *destinationKey,
2142  const int partNo, const char *uploadId,
2143  const unsigned long startOffset, const unsigned long count,
2144  const S3PutProperties *putProperties,
2145  int64_t *lastModifiedReturn, int eTagReturnSize,
2146  char *eTagReturn, S3RequestContext *requestContext,
2147  int timeoutMs,
2148  const S3ResponseHandler *handler, void *callbackData);
2149 
2150 
2173 void S3_get_object(const S3BucketContext *bucketContext, const char *key,
2174  const S3GetConditions *getConditions,
2175  uint64_t startByte, uint64_t byteCount,
2176  S3RequestContext *requestContext,
2177  int timeoutMs,
2178  const S3GetObjectHandler *handler, void *callbackData);
2179 
2180 
2196 void S3_head_object(const S3BucketContext *bucketContext, const char *key,
2197  S3RequestContext *requestContext,
2198  int timeoutMs,
2199  const S3ResponseHandler *handler, void *callbackData);
2200 
2216 void S3_delete_object(const S3BucketContext *bucketContext, const char *key,
2217  S3RequestContext *requestContext,
2218  int timeoutMs,
2219  const S3ResponseHandler *handler, void *callbackData);
2220 
2221 
2253 void S3_get_acl(const S3BucketContext *bucketContext, const char *key,
2254  char *ownerId, char *ownerDisplayName,
2255  int *aclGrantCountReturn, S3AclGrant *aclGrants,
2256  S3RequestContext *requestContext,
2257  int timeoutMs,
2258  const S3ResponseHandler *handler, void *callbackData);
2259 
2260 
2287 void S3_set_acl(const S3BucketContext *bucketContext, const char *key,
2288  const char *ownerId, const char *ownerDisplayName,
2289  int aclGrantCount, const S3AclGrant *aclGrants,
2290  S3RequestContext *requestContext,
2291  int timeoutMs,
2292  const S3ResponseHandler *handler, void *callbackData);
2293 
2294 
2315 void S3_get_lifecycle(const S3BucketContext *bucketContext,
2316  char *lifecycleXmlDocumentReturn, int lifecycleXmlDocumentBufferSize,
2317  S3RequestContext *requestContext,
2318  int timeoutMs,
2319  const S3ResponseHandler *handler, void *callbackData);
2320 
2321 
2337 void S3_set_lifecycle(const S3BucketContext *bucketContext,
2338  const char *lifecycleXmlDocument,
2339  S3RequestContext *requestContext,
2340  int timeoutMs,
2341  const S3ResponseHandler *handler, void *callbackData);
2342 
2384 void S3_get_server_access_logging(const S3BucketContext *bucketContext,
2385  char *targetBucketReturn,
2386  char *targetPrefixReturn,
2387  int *aclGrantCountReturn,
2388  S3AclGrant *aclGrants,
2389  S3RequestContext *requestContext,
2390  int timeoutMs,
2391  const S3ResponseHandler *handler,
2392  void *callbackData);
2393 
2394 
2425 void S3_set_server_access_logging(const S3BucketContext *bucketContext,
2426  const char *targetBucket,
2427  const char *targetPrefix, int aclGrantCount,
2428  const S3AclGrant *aclGrants,
2429  S3RequestContext *requestContext,
2430  int timeoutMs,
2431  const S3ResponseHandler *handler,
2432  void *callbackData);
2433 
2434 
2456 void S3_initiate_multipart(S3BucketContext *bucketContext, const char *key,
2457  S3PutProperties *putProperties,
2458  S3MultipartInitialHandler *handler,
2459  S3RequestContext *requestContext,
2460  int timeoutMs,
2461  void *callbackData);
2462 
2463 
2486 void S3_upload_part(S3BucketContext *bucketContext, const char *key,
2487  S3PutProperties * putProperties,
2488  S3PutObjectHandler *handler,
2489  int seq, const char *upload_id, int partContentLength,
2490  S3RequestContext *requestContext,
2491  int timeoutMs,
2492  void *callbackData);
2493 
2494 
2514 void S3_complete_multipart_upload(S3BucketContext *bucketContext,
2515  const char *key,
2516  S3MultipartCommitHandler *handler,
2517  const char *upload_id,
2518  int contentLength,
2519  S3RequestContext *requestContext,
2520  int timeoutMs,
2521  void *callbackData);
2522 
2523 
2550 void S3_list_parts(S3BucketContext *bucketContext, const char *key,
2551  const char *partnumbermarker,
2552  const char *uploadid, const char *encodingtype,
2553  int maxparts, S3RequestContext *requestContext,
2554  int timeoutMs,
2555  const S3ListPartsHandler *handler, void *callbackData);
2556 
2557 
2572 void S3_abort_multipart_upload(S3BucketContext *bucketContext, const char *key,
2573  const char *uploadId,
2574  int timeoutMs,
2576 
2577 
2609 void S3_list_multipart_uploads(S3BucketContext *bucketContext,
2610  const char *prefix, const char *keymarker,
2611  const char *uploadidmarker,
2612  const char *encodingtype, const char *delimiter,
2613  int maxuploads, S3RequestContext *requestContext,
2614  int timeoutMs,
2615  const S3ListMultipartUploadsHandler *handler,
2616  void *callbackData);
2617 
2618 #ifdef __cplusplus
2619 }
2620 #endif
2621 
2622 #endif /* LIBS3_H */
void S3_get_acl(const S3BucketContext *bucketContext, const char *key, char *ownerId, char *ownerDisplayName, int *aclGrantCountReturn, S3AclGrant *aclGrants, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
struct S3ListMultipartUpload S3ListMultipartUpload
Definition: libs3.h:322
struct S3MultipartCommitHandler S3MultipartCommitHandler
Definition: libs3.h:459
S3ResponseHandler responseHandler
Definition: libs3.h:1387
const char * name
Definition: libs3.h:532
const char * key
Definition: libs3.h:749
struct S3BucketContext S3BucketContext
S3Status(* S3SetupCurlCallback)(void *curlMulti, void *curlEasy, void *setupData)
Definition: libs3.h:1268
Definition: libs3.h:288
struct S3ListServiceHandler S3ListServiceHandler
S3Status S3_runonce_request_context(S3RequestContext *requestContext, int *requestsRemainingReturn)
S3GranteeType
Definition: libs3.h:454
Definition: libs3.h:334
Definition: libs3.h:505
Definition: libs3.h:298
Definition: libs3.h:1429
Definition: libs3.h:402
Definition: libs3.h:1281
Definition: libs3.h:353
struct S3RequestContext S3RequestContext
Definition: libs3.h:520
S3ResponseCompleteCallback * completeCallback
Definition: libs3.h:1296
const char * eTag
Definition: libs3.h:588
struct S3GetConditions S3GetConditions
const char * furtherDetails
Definition: libs3.h:981
Definition: libs3.h:302
void S3_set_request_context_verify_peer(S3RequestContext *requestContext, int verifyPeer)
Definition: libs3.h:399
int64_t expires
Definition: libs3.h:882
Definition: libs3.h:304
Definition: libs3.h:374
Definition: libs3.h:364
Definition: libs3.h:369
struct S3MultipartInitialHandler S3MultipartInitialHandler
Definition: libs3.h:316
Definition: libs3.h:338
Definition: libs3.h:381
Definition: libs3.h:456
int metaDataCount
Definition: libs3.h:604
Definition: libs3.h:367
const char * message
Definition: libs3.h:970
const char * bucketName
Definition: libs3.h:703
S3Status S3_validate_bucket_name(const char *bucketName, S3UriStyle uriStyle)
void S3_copy_object_range(const S3BucketContext *bucketContext, const char *key, const char *destinationBucket, const char *destinationKey, const int partNo, const char *uploadId, const unsigned long startOffset, const unsigned long count, const S3PutProperties *putProperties, int64_t *lastModifiedReturn, int eTagReturnSize, char *eTagReturn, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:379
S3Protocol
Definition: libs3.h:416
Definition: libs3.h:821
Definition: libs3.h:285
Definition: libs3.h:340
Definition: libs3.h:397
int metaDataCount
Definition: libs3.h:893
const char * server
Definition: libs3.h:580
S3Permission
Definition: libs3.h:479
const char * S3_get_status_name(S3Status status)
Definition: libs3.h:350
Definition: libs3.h:270
S3Permission permission
Definition: libs3.h:682
void S3_upload_part(S3BucketContext *bucketContext, const char *key, S3PutProperties *putProperties, S3PutObjectHandler *handler, int seq, const char *upload_id, int partContentLength, S3RequestContext *requestContext, int timeoutMs, void *callbackData)
Definition: libs3.h:527
Definition: libs3.h:1409
Definition: libs3.h:787
Definition: libs3.h:318
S3ResponseHandler responseHandler
Definition: libs3.h:1424
S3Status S3_create_request_context_ex(S3RequestContext **requestContextReturn, void *curlMulti, S3SetupCurlCallback setupCurlCallback, void *setupCurlCallbackData)
uint64_t size
Definition: libs3.h:831
Definition: libs3.h:254
Definition: libs3.h:332
int64_t ifNotModifiedSince
Definition: libs3.h:939
Definition: libs3.h:363
S3ResponseHandler responseHandler
Definition: libs3.h:1309
struct S3ListMultipartUploadsHandler S3ListMultipartUploadsHandler
int64_t lastModified
Definition: libs3.h:829
S3ListBucketCallback * listBucketCallback
Definition: libs3.h:1336
Definition: libs3.h:342
S3Status S3_convert_acl(char *aclXml, char *ownerId, char *ownerDisplayName, int *aclGrantCountReturn, S3AclGrant *aclGrants)
void S3_get_server_access_logging(const S3BucketContext *bucketContext, char *targetBucketReturn, char *targetPrefixReturn, int *aclGrantCountReturn, S3AclGrant *aclGrants, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:356
S3Status S3_runall_request_context(S3RequestContext *requestContext)
const char * ifMatchETag
Definition: libs3.h:947
uint64_t size
Definition: libs3.h:766
Definition: libs3.h:297
Definition: libs3.h:352
void S3_create_bucket(S3Protocol protocol, const char *accessKeyId, const char *secretAccessKey, const char *securityToken, const char *hostName, const char *bucketName, const char *authRegion, S3CannedAcl cannedAcl, const char *locationConstraint, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:398
const char * requestId
Definition: libs3.h:553
struct S3ErrorDetails S3ErrorDetails
const char * accessKeyId
Definition: libs3.h:719
struct S3ResponseProperties S3ResponseProperties
void S3_copy_object(const S3BucketContext *bucketContext, const char *key, const char *destinationBucket, const char *destinationKey, const S3PutProperties *putProperties, int64_t *lastModifiedReturn, int eTagReturnSize, char *eTagReturn, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
int extraDetailsCount
Definition: libs3.h:987
Definition: libs3.h:460
Definition: libs3.h:329
const char * key
Definition: libs3.h:792
Definition: libs3.h:483
Definition: libs3.h:506
Definition: libs3.h:260
Definition: libs3.h:382
Definition: libs3.h:383
Definition: libs3.h:547
Definition: libs3.h:305
Definition: libs3.h:328
Definition: libs3.h:271
void S3_delete_bucket(S3Protocol protocol, S3UriStyle uriStyle, const char *accessKeyId, const char *secretAccessKey, const char *securityToken, const char *hostName, const char *bucketName, const char *authRegion, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
S3ListMultipartUploadsResponseCallback * responseXmlCallback
Definition: libs3.h:1416
S3ResponsePropertiesCallback * propertiesCallback
Definition: libs3.h:1288
void S3_list_service(S3Protocol protocol, const char *accessKeyId, const char *secretAccessKey, const char *securityToken, const char *hostName, const char *authRegion, S3RequestContext *requestContext, int timeoutMs, const S3ListServiceHandler *handler, void *callbackData)
int64_t initiated
Definition: libs3.h:816
Definition: libs3.h:386
Definition: libs3.h:291
Definition: libs3.h:401
const char * ownerId
Definition: libs3.h:802
S3ListPartsResponseCallback * responseXmlCallback
Definition: libs3.h:1426
struct S3ResponseHandler S3ResponseHandler
S3UriStyle
Definition: libs3.h:435
void S3_abort_multipart_upload(S3BucketContext *bucketContext, const char *key, const char *uploadId, int timeoutMs, S3AbortMultipartUploadHandler *handler)
Definition: libs3.h:265
union S3AclGrant::@0 grantee
struct S3AbortMultipartUploadHandler S3AbortMultipartUploadHandler
Definition: libs3.h:391
void S3_delete_object(const S3BucketContext *bucketContext, const char *key, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:276
struct S3ListPartsHandler S3ListPartsHandler
int( S3PutObjectDataCallback)(int bufferSize, char *buffer, void *callbackData)
Definition: libs3.h:1122
Definition: libs3.h:286
S3CannedAcl
Definition: libs3.h:502
const char * requestId2
Definition: libs3.h:559
uint64_t partNumber
Definition: libs3.h:830
Definition: libs3.h:325
#define S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE
Definition: libs3.h:186
S3ResponseHandler responseHandler
Definition: libs3.h:1328
Definition: libs3.h:1419
Definition: libs3.h:371
Definition: libs3.h:634
void S3_put_object(const S3BucketContext *bucketContext, const char *key, uint64_t contentLength, const S3PutProperties *putProperties, S3RequestContext *requestContext, int timeoutMs, const S3PutObjectHandler *handler, void *callbackData)
Definition: libs3.h:294
const char * ownerId
Definition: libs3.h:772
struct S3AclGrant S3AclGrant
Definition: libs3.h:375
Definition: libs3.h:293
void S3_get_object(const S3BucketContext *bucketContext, const char *key, const S3GetConditions *getConditions, uint64_t startByte, uint64_t byteCount, S3RequestContext *requestContext, int timeoutMs, const S3GetObjectHandler *handler, void *callbackData)
const S3NameValue * metaData
Definition: libs3.h:900
Definition: libs3.h:349
const char * resource
Definition: libs3.h:975
Definition: libs3.h:295
Definition: libs3.h:923
Definition: libs3.h:504
const char * eTag
Definition: libs3.h:761
Definition: libs3.h:438
S3Status S3_create_request_context(S3RequestContext **requestContextReturn)
S3ListServiceCallback * listServiceCallback
Definition: libs3.h:1315
struct S3AclGrant::@0::@2 canonicalUser
void S3_test_bucket(S3Protocol protocol, S3UriStyle uriStyle, const char *accessKeyId, const char *secretAccessKey, const char *securityToken, const char *hostName, const char *bucketName, const char *authRegion, int locationConstraintReturnSize, char *locationConstraintReturn, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:290
void S3_deinitialize()
const char * authRegion
Definition: libs3.h:735
char useServerSideEncryption
Definition: libs3.h:915
Definition: libs3.h:331
Definition: libs3.h:284
Definition: libs3.h:508
Definition: libs3.h:344
S3Status S3_get_request_context_fdsets(S3RequestContext *requestContext, fd_set *readFdSet, fd_set *writeFdSet, fd_set *exceptFdSet, int *maxFd)
Definition: libs3.h:482
struct S3ListBucketContent S3ListBucketContent
S3PutObjectDataCallback * putObjectDataCallback
Definition: libs3.h:1405
Definition: libs3.h:303
Definition: libs3.h:263
int64_t lastModified
Definition: libs3.h:598
Definition: libs3.h:277
Definition: libs3.h:341
Definition: libs3.h:964
int S3_status_is_retryable(S3Status status)
Definition: libs3.h:262
void S3_list_parts(S3BucketContext *bucketContext, const char *key, const char *partnumbermarker, const char *uploadid, const char *encodingtype, int maxparts, S3RequestContext *requestContext, int timeoutMs, const S3ListPartsHandler *handler, void *callbackData)
S3Status( S3ListPartsResponseCallback)(int isTruncated, const char *nextPartNumberMarker, const char *initiatorId, const char *initiatorDisplayName, const char *ownerId, const char *ownerDisplayName, const char *storageClass, int partsCount, int lastPartNumber, const S3ListPart *parts, void *callbackData)
Definition: libs3.h:1222
char emailAddress[S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE]
Definition: libs3.h:661
Definition: libs3.h:358
Definition: libs3.h:346
const char * contentDispositionFilename
Definition: libs3.h:868
#define S3_MAX_GRANTEE_DISPLAY_NAME_SIZE
Definition: libs3.h:200
Definition: libs3.h:289
struct S3NameValue S3NameValue
S3ResponseHandler responseHandler
Definition: libs3.h:1397
const char * initiatorId
Definition: libs3.h:795
S3Status S3_initialize(const char *userAgentInfo, int flags, const char *defaultS3HostName)
const char * contentType
Definition: libs3.h:566
Definition: libs3.h:419
Definition: libs3.h:400
struct S3PutObjectHandler S3PutObjectHandler
S3GetObjectDataCallback * getObjectDataCallback
Definition: libs3.h:1379
Definition: libs3.h:267
int64_t lastModified
Definition: libs3.h:755
Definition: libs3.h:1304
void S3_complete_multipart_upload(S3BucketContext *bucketContext, const char *key, S3MultipartCommitHandler *handler, const char *upload_id, int contentLength, S3RequestContext *requestContext, int timeoutMs, void *callbackData)
const char * hostName
Definition: libs3.h:698
S3Status( S3ListServiceCallback)(const char *ownerId, const char *ownerDisplayName, const char *bucketName, int64_t creationDateSeconds, void *callbackData)
Definition: libs3.h:1058
S3ResponseHandler responseHandler
Definition: libs3.h:1349
S3Status( S3MultipartInitialResponseCallback)(const char *upload_id, void *callbackData)
Definition: libs3.h:1165
S3Status S3_generate_authenticated_query_string(char *buffer, const S3BucketContext *bucketContext, const char *key, int expires, const char *resource, const char *httpMethod)
Definition: libs3.h:306
Definition: libs3.h:343
Definition: libs3.h:261
Definition: libs3.h:282
Definition: libs3.h:1344
int64_t ifModifiedSince
Definition: libs3.h:931
Definition: libs3.h:278
struct S3ListPart S3ListPart
Definition: libs3.h:272
Definition: libs3.h:300
Definition: libs3.h:1392
Definition: libs3.h:321
Definition: libs3.h:457
Definition: libs3.h:283
Definition: libs3.h:292
S3Status
Definition: libs3.h:252
S3MultipartInitialResponseCallback * responseXmlCallback
Definition: libs3.h:1389
Definition: libs3.h:287
Definition: libs3.h:458
Definition: libs3.h:333
Definition: libs3.h:337
S3Status( S3ListBucketCallback)(int isTruncated, const char *nextMarker, int contentsCount, const S3ListBucketContent *contents, int commonPrefixesCount, const char **commonPrefixes, void *callbackData)
Definition: libs3.h:1095
const char * ownerDisplayName
Definition: libs3.h:808
Definition: libs3.h:1365
Definition: libs3.h:307
Definition: libs3.h:385
Definition: libs3.h:313
Definition: libs3.h:744
S3Status S3_process_request_context(S3RequestContext *requestContext)
Definition: libs3.h:840
const char * eTag
Definition: libs3.h:823
S3ResponseHandler responseHandler
Definition: libs3.h:1434
S3Status( S3ResponsePropertiesCallback)(const S3ResponseProperties *properties, void *callbackData)
Definition: libs3.h:1016
Definition: libs3.h:339
Definition: libs3.h:390
Definition: libs3.h:327
struct S3AclGrant::@0::@1 amazonCustomerByEmail
const char * contentType
Definition: libs3.h:846
Definition: libs3.h:507
const char * secretAccessKey
Definition: libs3.h:724
Definition: libs3.h:365
Definition: libs3.h:372
Definition: libs3.h:481
S3Status( S3ListMultipartUploadsResponseCallback)(int isTruncated, const char *nextKeyMarker, const char *nextUploadIdMarker, int uploadsCount, const S3ListMultipartUpload *uploads, int commonPrefixesCount, const char **commonPrefixes, void *callbackData)
Definition: libs3.h:1193
Definition: libs3.h:275
Definition: libs3.h:301
Definition: libs3.h:384
Definition: libs3.h:1323
Definition: libs3.h:359
Definition: libs3.h:1383
Definition: libs3.h:348
char usesServerSideEncryption
Definition: libs3.h:624
void S3_destroy_request_context(S3RequestContext *requestContext)
char displayName[S3_MAX_GRANTEE_DISPLAY_NAME_SIZE]
Definition: libs3.h:676
S3CannedAcl cannedAcl
Definition: libs3.h:888
const char * cacheControl
Definition: libs3.h:859
Definition: libs3.h:296
int64_t S3_get_request_context_timeout(S3RequestContext *requestContext)
Definition: libs3.h:370
Definition: libs3.h:323
S3MultipartCommitResponseCallback * responseXmlCallback
Definition: libs3.h:1406
Definition: libs3.h:485
Definition: libs3.h:273
S3PutObjectDataCallback * putObjectDataCallback
Definition: libs3.h:1357
Definition: libs3.h:373
#define S3_MAX_GRANTEE_USER_ID_SIZE
Definition: libs3.h:193
struct S3PutProperties S3PutProperties
void S3_list_multipart_uploads(S3BucketContext *bucketContext, const char *prefix, const char *keymarker, const char *uploadidmarker, const char *encodingtype, const char *delimiter, int maxuploads, S3RequestContext *requestContext, int timeoutMs, const S3ListMultipartUploadsHandler *handler, void *callbackData)
Definition: libs3.h:345
void S3_set_server_access_logging(const S3BucketContext *bucketContext, const char *targetBucket, const char *targetPrefix, int aclGrantCount, const S3AclGrant *aclGrants, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
const char * value
Definition: libs3.h:537
const char * ownerDisplayName
Definition: libs3.h:778
void S3_list_bucket(const S3BucketContext *bucketContext, const char *prefix, const char *marker, const char *delimiter, int maxkeys, S3RequestContext *requestContext, int timeoutMs, const S3ListBucketHandler *handler, void *callbackData)
const char * ifNotMatchETag
Definition: libs3.h:955
S3UriStyle uriStyle
Definition: libs3.h:714
void S3_set_lifecycle(const S3BucketContext *bucketContext, const char *lifecycleXmlDocument, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:387
S3ResponseHandler responseHandler
Definition: libs3.h:1414
Definition: libs3.h:351
Definition: libs3.h:362
const char * uploadId
Definition: libs3.h:794
const S3NameValue * metaData
Definition: libs3.h:612
Definition: libs3.h:315
Definition: libs3.h:418
Definition: libs3.h:281
Definition: libs3.h:357
const char * storageClass
Definition: libs3.h:810
void( S3ResponseCompleteCallback)(S3Status status, const S3ErrorDetails *errorDetails, void *callbackData)
Definition: libs3.h:1035
const char * initiatorDisplayName
Definition: libs3.h:796
void S3_get_lifecycle(const S3BucketContext *bucketContext, char *lifecycleXmlDocumentReturn, int lifecycleXmlDocumentBufferSize, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
void S3_head_object(const S3BucketContext *bucketContext, const char *key, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
S3Status( S3MultipartCommitResponseCallback)(const char *location, const char *etag, void *callbackData)
Definition: libs3.h:1245
Definition: libs3.h:312
const char * securityToken
Definition: libs3.h:729
uint64_t contentLength
Definition: libs3.h:575
struct S3ListBucketHandler S3ListBucketHandler
Definition: libs3.h:269
struct S3GetObjectHandler S3GetObjectHandler
void S3_initiate_multipart(S3BucketContext *bucketContext, const char *key, S3PutProperties *putProperties, S3MultipartInitialHandler *handler, S3RequestContext *requestContext, int timeoutMs, void *callbackData)
Definition: libs3.h:378
Definition: libs3.h:274
S3GranteeType granteeType
Definition: libs3.h:639
S3ResponseHandler responseHandler
Definition: libs3.h:1370
Definition: libs3.h:368
const char * contentEncoding
Definition: libs3.h:875
S3Protocol protocol
Definition: libs3.h:708
S3Status( S3GetObjectDataCallback)(int bufferSize, const char *buffer, void *callbackData)
Definition: libs3.h:1144
Definition: libs3.h:692
Definition: libs3.h:299
Definition: libs3.h:437
const char * md5
Definition: libs3.h:853
S3NameValue * extraDetails
Definition: libs3.h:994
Definition: libs3.h:484
void S3_set_acl(const S3BucketContext *bucketContext, const char *key, const char *ownerId, const char *ownerDisplayName, int aclGrantCount, const S3AclGrant *aclGrants, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)