libs3  trunk
libs3.h
Go to the documentation of this file.
1 
27 #ifndef LIBS3_H
28 #define LIBS3_H
29 
30 #include <stdint.h>
31 #include <sys/select.h>
32 
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 
121 #define S3_MAX_HOSTNAME_SIZE 255
122 
126 #define S3_DEFAULT_HOSTNAME "s3.amazonaws.com"
127 
128 
133 #define S3_MAX_BUCKET_NAME_SIZE 255
134 
138 #define S3_MAX_KEY_SIZE 1024
139 
140 
145 #define S3_MAX_METADATA_SIZE 2048
146 
147 
151 #define S3_METADATA_HEADER_NAME_PREFIX "x-amz-meta-"
152 
153 
161 #define S3_MAX_METADATA_COUNT \
162  (S3_MAX_METADATA_SIZE / (sizeof(S3_METADATA_HEADER_NAME_PREFIX "nv") - 1))
163 
164 
170 #define S3_MAX_ACL_GRANT_COUNT 100
171 
172 
177 #define S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE 128
178 
179 
184 #define S3_MAX_GRANTEE_USER_ID_SIZE 128
185 
186 
191 #define S3_MAX_GRANTEE_DISPLAY_NAME_SIZE 128
192 
193 
199 #define S3_MAX_AUTHENTICATED_QUERY_STRING_SIZE \
200  (sizeof("https:
201  sizeof("?AWSAccessKeyId=") + 32 + sizeof("&Expires=") + 32 + \
202  sizeof("&Signature=") + 28 + 1)
203 
204 
210 #define S3_INIT_WINSOCK 1
211 
212 
217 #define S3_INIT_ALL (S3_INIT_WINSOCK)
218 
219 
229 typedef enum
230 {
232 
284 
352 
363 } S3Status;
364 
365 
376 typedef enum
377 {
380 } S3Protocol;
381 
382 
395 typedef enum
396 {
399 } S3UriStyle;
400 
401 
414 typedef enum
415 {
421 } S3GranteeType;
422 
423 
439 typedef enum
440 {
446 } S3Permission;
447 
448 
462 typedef enum
463 {
464  S3CannedAclPrivate = 0, /* private */
465  S3CannedAclPublicRead = 1, /* public-read */
466  S3CannedAclPublicReadWrite = 2, /* public-read-write */
467  S3CannedAclAuthenticatedRead = 3 /* authenticated-read */
468 } S3CannedAcl;
469 
470 
480 
481 
486 typedef struct S3NameValue
487 {
491  const char *name;
492 
496  const char *value;
497 } S3NameValue;
498 
499 
506 typedef struct S3ResponseProperties
507 {
512  const char *requestId;
513 
518  const char *requestId2;
519 
525  const char *contentType;
526 
534  uint64_t contentLength;
535 
539  const char *server;
540 
547  const char *eTag;
548 
557  int64_t lastModified;
558 
564 
573 
574 
581 typedef struct S3AclGrant
582 {
596  union
597  {
602  struct
603  {
614  struct
615  {
624  } canonicalUser;
625  } grantee;
630 } S3AclGrant;
631 
632 
639 typedef struct S3BucketContext
640 {
645  const char *hostName;
646 
650  const char *bucketName;
651 
656 
662 
666  const char *accessKeyId;
667 
671  const char *secretAccessKey;
673 
674 
680 typedef struct S3ListBucketContent
681 {
685  const char *key;
686 
691  int64_t lastModified;
692 
697  const char *eTag;
698 
702  uint64_t size;
703 
708  const char *ownerId;
709 
714  const char *ownerDisplayName;
716 
717 
723 typedef struct S3PutProperties
724 {
729  const char *contentType;
730 
736  const char *md5;
737 
742  const char *cacheControl;
743 
752 
758  const char *contentEncoding;
759 
765  int64_t expires;
766 
772 
777 
785 
786 
791 typedef struct S3GetConditions
792 {
800 
808 
815  const char *ifMatchETag;
816 
823  const char *ifNotMatchETag;
825 
826 
832 typedef struct S3ErrorDetails
833 {
838  const char *message;
839 
843  const char *resource;
844 
849  const char *furtherDetails;
850 
856 
864 
865 
884  (const S3ResponseProperties *properties, void *callbackData);
885 
886 
903 typedef void (S3ResponseCompleteCallback)(S3Status status,
904  const S3ErrorDetails *errorDetails,
905  void *callbackData);
906 
907 
926 typedef S3Status (S3ListServiceCallback)(const char *ownerId,
927  const char *ownerDisplayName,
928  const char *bucketName,
929  int64_t creationDateSeconds,
930  void *callbackData);
931 
932 
963 typedef S3Status (S3ListBucketCallback)(int isTruncated,
964  const char *nextMarker,
965  int contentsCount,
966  const S3ListBucketContent *contents,
967  int commonPrefixesCount,
968  const char **commonPrefixes,
969  void *callbackData);
970 
971 
990 typedef int (S3PutObjectDataCallback)(int bufferSize, char *buffer,
991  void *callbackData);
992 
993 
1012 typedef S3Status (S3GetObjectDataCallback)(int bufferSize, const char *buffer,
1013  void *callbackData);
1014 
1015 
1025 typedef struct S3ResponseHandler
1026 {
1033 
1042 
1043 
1048 typedef struct S3ListServiceHandler
1049 {
1054 
1061 
1062 
1067 typedef struct S3ListBucketHandler
1068 {
1073 
1082 
1083 
1088 typedef struct S3PutObjectHandler
1089 {
1094 
1103 
1104 
1109 typedef struct S3GetObjectHandler
1110 {
1115 
1125 
1126 
1169 S3Status S3_initialize(const char *userAgentInfo, int flags,
1170  const char *defaultS3HostName);
1171 
1172 
1178 void S3_deinitialize();
1179 
1180 
1187 const char *S3_get_status_name(S3Status status);
1188 
1189 
1229 S3Status S3_validate_bucket_name(const char *bucketName, S3UriStyle uriStyle);
1230 
1231 
1258 S3Status S3_convert_acl(char *aclXml, char *ownerId, char *ownerDisplayName,
1259  int *aclGrantCountReturn, S3AclGrant *aclGrants);
1260 
1261 
1272 int S3_status_is_retryable(S3Status status);
1273 
1274 
1297 S3Status S3_create_request_context(S3RequestContext **requestContextReturn);
1298 
1299 
1308 void S3_destroy_request_context(S3RequestContext *requestContext);
1309 
1310 
1325 
1326 
1346  int *requestsRemainingReturn);
1347 
1348 
1380  fd_set *readFdSet, fd_set *writeFdSet,
1381  fd_set *exceptFdSet, int *maxFd);
1382 
1383 
1398 int64_t S3_get_request_context_timeout(S3RequestContext *requestContext);
1399 
1400 
1431  (char *buffer, const S3BucketContext *bucketContext,
1432  const char *key, int64_t expires, const char *resource);
1433 
1434 
1457 void S3_list_service(S3Protocol protocol, const char *accessKeyId,
1458  const char *secretAccessKey, const char *hostName,
1459  S3RequestContext *requestContext,
1460  const S3ListServiceHandler *handler,
1461  void *callbackData);
1462 
1463 
1498 void S3_test_bucket(S3Protocol protocol, S3UriStyle uriStyle,
1499  const char *accessKeyId, const char *secretAccessKey,
1500  const char *hostName, const char *bucketName,
1501  int locationConstraintReturnSize,
1502  char *locationConstraintReturn,
1503  S3RequestContext *requestContext,
1504  const S3ResponseHandler *handler, void *callbackData);
1505 
1506 
1529 void S3_create_bucket(S3Protocol protocol, const char *accessKeyId,
1530  const char *secretAccessKey, const char *hostName,
1531  const char *bucketName, S3CannedAcl cannedAcl,
1532  const char *locationConstraint,
1533  S3RequestContext *requestContext,
1534  const S3ResponseHandler *handler, void *callbackData);
1535 
1536 
1558 void S3_delete_bucket(S3Protocol protocol, S3UriStyle uriStyle,
1559  const char *accessKeyId, const char *secretAccessKey,
1560  const char *hostName, const char *bucketName,
1561  S3RequestContext *requestContext,
1562  const S3ResponseHandler *handler, void *callbackData);
1563 
1564 
1585 void S3_list_bucket(const S3BucketContext *bucketContext,
1586  const char *prefix, const char *marker,
1587  const char *delimiter, int maxkeys,
1588  S3RequestContext *requestContext,
1589  const S3ListBucketHandler *handler, void *callbackData);
1590 
1591 
1616 void S3_put_object(const S3BucketContext *bucketContext, const char *key,
1617  uint64_t contentLength,
1618  const S3PutProperties *putProperties,
1619  S3RequestContext *requestContext,
1620  const S3PutObjectHandler *handler, void *callbackData);
1621 
1622 
1657 void S3_copy_object(const S3BucketContext *bucketContext,
1658  const char *key, const char *destinationBucket,
1659  const char *destinationKey,
1660  const S3PutProperties *putProperties,
1661  int64_t *lastModifiedReturn, int eTagReturnSize,
1662  char *eTagReturn, S3RequestContext *requestContext,
1663  const S3ResponseHandler *handler, void *callbackData);
1664 
1665 
1687 void S3_get_object(const S3BucketContext *bucketContext, const char *key,
1688  const S3GetConditions *getConditions,
1689  uint64_t startByte, uint64_t byteCount,
1690  S3RequestContext *requestContext,
1691  const S3GetObjectHandler *handler, void *callbackData);
1692 
1693 
1708 void S3_head_object(const S3BucketContext *bucketContext, const char *key,
1709  S3RequestContext *requestContext,
1710  const S3ResponseHandler *handler, void *callbackData);
1711 
1726 void S3_delete_object(const S3BucketContext *bucketContext, const char *key,
1727  S3RequestContext *requestContext,
1728  const S3ResponseHandler *handler, void *callbackData);
1729 
1730 
1761 void S3_get_acl(const S3BucketContext *bucketContext, const char *key,
1762  char *ownerId, char *ownerDisplayName,
1763  int *aclGrantCountReturn, S3AclGrant *aclGrants,
1764  S3RequestContext *requestContext,
1765  const S3ResponseHandler *handler, void *callbackData);
1766 
1767 
1793 void S3_set_acl(const S3BucketContext *bucketContext, const char *key,
1794  const char *ownerId, const char *ownerDisplayName,
1795  int aclGrantCount, const S3AclGrant *aclGrants,
1796  S3RequestContext *requestContext,
1797  const S3ResponseHandler *handler, void *callbackData);
1798 
1799 
1840 void S3_get_server_access_logging(const S3BucketContext *bucketContext,
1841  char *targetBucketReturn,
1842  char *targetPrefixReturn,
1843  int *aclGrantCountReturn,
1844  S3AclGrant *aclGrants,
1845  S3RequestContext *requestContext,
1846  const S3ResponseHandler *handler,
1847  void *callbackData);
1848 
1849 
1879 void S3_set_server_access_logging(const S3BucketContext *bucketContext,
1880  const char *targetBucket,
1881  const char *targetPrefix, int aclGrantCount,
1882  const S3AclGrant *aclGrants,
1883  S3RequestContext *requestContext,
1884  const S3ResponseHandler *handler,
1885  void *callbackData);
1886 
1887 
1888 #ifdef __cplusplus
1889 }
1890 #endif
1891 
1892 #endif /* LIBS3_H */
Definition: libs3.h:298
Definition: libs3.h:419
const char * name
Definition: libs3.h:491
const char * key
Definition: libs3.h:685
struct S3BucketContext S3BucketContext
Definition: libs3.h:265
struct S3ListServiceHandler S3ListServiceHandler
S3Status S3_runonce_request_context(S3RequestContext *requestContext, int *requestsRemainingReturn)
S3GranteeType
Definition: libs3.h:414
Definition: libs3.h:308
Definition: libs3.h:465
Definition: libs3.h:275
Definition: libs3.h:362
Definition: libs3.h:1025
Definition: libs3.h:321
struct S3RequestContext S3RequestContext
Definition: libs3.h:479
S3ResponseCompleteCallback * completeCallback
Definition: libs3.h:1040
const char * eTag
Definition: libs3.h:547
struct S3GetConditions S3GetConditions
const char * furtherDetails
Definition: libs3.h:849
Definition: libs3.h:279
S3Status S3_generate_authenticated_query_string(char *buffer, const S3BucketContext *bucketContext, const char *key, int64_t expires, const char *resource)
Definition: libs3.h:359
int64_t expires
Definition: libs3.h:765
Definition: libs3.h:281
Definition: libs3.h:337
Definition: libs3.h:331
Definition: libs3.h:333
Definition: libs3.h:292
Definition: libs3.h:343
Definition: libs3.h:416
int metaDataCount
Definition: libs3.h:563
const char * message
Definition: libs3.h:838
const char * bucketName
Definition: libs3.h:650
S3Status S3_validate_bucket_name(const char *bucketName, S3UriStyle uriStyle)
Definition: libs3.h:341
S3Protocol
Definition: libs3.h:376
Definition: libs3.h:262
Definition: libs3.h:310
void S3_set_acl(const S3BucketContext *bucketContext, const char *key, const char *ownerId, const char *ownerDisplayName, int aclGrantCount, const S3AclGrant *aclGrants, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:357
int metaDataCount
Definition: libs3.h:776
const char * server
Definition: libs3.h:539
S3Permission
Definition: libs3.h:439
const char * S3_get_status_name(S3Status status)
Definition: libs3.h:319
Definition: libs3.h:247
S3Permission permission
Definition: libs3.h:629
Definition: libs3.h:486
void S3_test_bucket(S3Protocol protocol, S3UriStyle uriStyle, const char *accessKeyId, const char *secretAccessKey, const char *hostName, const char *bucketName, int locationConstraintReturnSize, char *locationConstraintReturn, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:294
Definition: libs3.h:231
Definition: libs3.h:307
int64_t ifNotModifiedSince
Definition: libs3.h:807
void S3_set_server_access_logging(const S3BucketContext *bucketContext, const char *targetBucket, const char *targetPrefix, int aclGrantCount, const S3AclGrant *aclGrants, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:330
S3ResponseHandler responseHandler
Definition: libs3.h:1053
S3ListBucketCallback * listBucketCallback
Definition: libs3.h:1080
Definition: libs3.h:312
S3Status S3_convert_acl(char *aclXml, char *ownerId, char *ownerDisplayName, int *aclGrantCountReturn, S3AclGrant *aclGrants)
Definition: libs3.h:324
S3Status S3_runall_request_context(S3RequestContext *requestContext)
const char * ifMatchETag
Definition: libs3.h:815
uint64_t size
Definition: libs3.h:702
Definition: libs3.h:274
Definition: libs3.h:358
const char * requestId
Definition: libs3.h:512
struct S3ErrorDetails S3ErrorDetails
const char * accessKeyId
Definition: libs3.h:666
struct S3ResponseProperties S3ResponseProperties
int extraDetailsCount
Definition: libs3.h:855
Definition: libs3.h:420
Definition: libs3.h:304
Definition: libs3.h:443
Definition: libs3.h:466
Definition: libs3.h:237
void S3_head_object(const S3BucketContext *bucketContext, const char *key, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:344
Definition: libs3.h:506
Definition: libs3.h:282
Definition: libs3.h:303
Definition: libs3.h:248
S3ResponsePropertiesCallback * propertiesCallback
Definition: libs3.h:1032
Definition: libs3.h:347
Definition: libs3.h:268
Definition: libs3.h:361
struct S3ResponseHandler S3ResponseHandler
S3UriStyle
Definition: libs3.h:395
Definition: libs3.h:242
union S3AclGrant::@0 grantee
Definition: libs3.h:351
Definition: libs3.h:253
int( S3PutObjectDataCallback)(int bufferSize, char *buffer, void *callbackData)
Definition: libs3.h:990
Definition: libs3.h:263
S3CannedAcl
Definition: libs3.h:462
const char * requestId2
Definition: libs3.h:518
void S3_list_bucket(const S3BucketContext *bucketContext, const char *prefix, const char *marker, const char *delimiter, int maxkeys, S3RequestContext *requestContext, const S3ListBucketHandler *handler, void *callbackData)
Definition: libs3.h:300
#define S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE
Definition: libs3.h:177
S3ResponseHandler responseHandler
Definition: libs3.h:1072
Definition: libs3.h:581
Definition: libs3.h:271
const char * ownerId
Definition: libs3.h:708
struct S3AclGrant S3AclGrant
Definition: libs3.h:338
Definition: libs3.h:270
const S3NameValue * metaData
Definition: libs3.h:783
Definition: libs3.h:318
const char * resource
Definition: libs3.h:843
Definition: libs3.h:272
Definition: libs3.h:791
Definition: libs3.h:464
const char * eTag
Definition: libs3.h:697
Definition: libs3.h:398
S3Status S3_create_request_context(S3RequestContext **requestContextReturn)
S3ListServiceCallback * listServiceCallback
Definition: libs3.h:1059
struct S3AclGrant::@0::@2 canonicalUser
Definition: libs3.h:267
void S3_deinitialize()
Definition: libs3.h:306
Definition: libs3.h:261
Definition: libs3.h:313
S3Status S3_get_request_context_fdsets(S3RequestContext *requestContext, fd_set *readFdSet, fd_set *writeFdSet, fd_set *exceptFdSet, int *maxFd)
Definition: libs3.h:442
struct S3ListBucketContent S3ListBucketContent
void S3_get_acl(const S3BucketContext *bucketContext, const char *key, char *ownerId, char *ownerDisplayName, int *aclGrantCountReturn, S3AclGrant *aclGrants, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:280
void S3_put_object(const S3BucketContext *bucketContext, const char *key, uint64_t contentLength, const S3PutProperties *putProperties, S3RequestContext *requestContext, const S3PutObjectHandler *handler, void *callbackData)
void S3_delete_bucket(S3Protocol protocol, S3UriStyle uriStyle, const char *accessKeyId, const char *secretAccessKey, const char *hostName, const char *bucketName, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:240
int64_t lastModified
Definition: libs3.h:557
Definition: libs3.h:254
Definition: libs3.h:311
Definition: libs3.h:832
int S3_status_is_retryable(S3Status status)
Definition: libs3.h:239
char emailAddress[S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE]
Definition: libs3.h:608
Definition: libs3.h:326
Definition: libs3.h:315
const char * contentDispositionFilename
Definition: libs3.h:751
#define S3_MAX_GRANTEE_DISPLAY_NAME_SIZE
Definition: libs3.h:191
Definition: libs3.h:266
struct S3NameValue S3NameValue
S3Status S3_initialize(const char *userAgentInfo, int flags, const char *defaultS3HostName)
const char * contentType
Definition: libs3.h:525
void S3_create_bucket(S3Protocol protocol, const char *accessKeyId, const char *secretAccessKey, const char *hostName, const char *bucketName, S3CannedAcl cannedAcl, const char *locationConstraint, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:379
Definition: libs3.h:360
struct S3PutObjectHandler S3PutObjectHandler
S3GetObjectDataCallback * getObjectDataCallback
Definition: libs3.h:1123
Definition: libs3.h:244
int64_t lastModified
Definition: libs3.h:691
Definition: libs3.h:1048
const char * hostName
Definition: libs3.h:645
void S3_get_server_access_logging(const S3BucketContext *bucketContext, char *targetBucketReturn, char *targetPrefixReturn, int *aclGrantCountReturn, S3AclGrant *aclGrants, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
S3Status( S3ListServiceCallback)(const char *ownerId, const char *ownerDisplayName, const char *bucketName, int64_t creationDateSeconds, void *callbackData)
Definition: libs3.h:926
S3ResponseHandler responseHandler
Definition: libs3.h:1093
Definition: libs3.h:283
Definition: libs3.h:238
Definition: libs3.h:259
void S3_delete_object(const S3BucketContext *bucketContext, const char *key, S3RequestContext *requestContext, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:1088
int64_t ifModifiedSince
Definition: libs3.h:799
Definition: libs3.h:255
Definition: libs3.h:249
Definition: libs3.h:277
void S3_get_object(const S3BucketContext *bucketContext, const char *key, const S3GetConditions *getConditions, uint64_t startByte, uint64_t byteCount, S3RequestContext *requestContext, const S3GetObjectHandler *handler, void *callbackData)
Definition: libs3.h:297
Definition: libs3.h:417
Definition: libs3.h:260
Definition: libs3.h:269
S3Status
Definition: libs3.h:229
Definition: libs3.h:264
Definition: libs3.h:418
S3Status( S3ListBucketCallback)(int isTruncated, const char *nextMarker, int contentsCount, const S3ListBucketContent *contents, int commonPrefixesCount, const char **commonPrefixes, void *callbackData)
Definition: libs3.h:963
Definition: libs3.h:1109
Definition: libs3.h:346
Definition: libs3.h:289
Definition: libs3.h:680
Definition: libs3.h:723
S3Status( S3ResponsePropertiesCallback)(const S3ResponseProperties *properties, void *callbackData)
Definition: libs3.h:884
Definition: libs3.h:302
struct S3AclGrant::@0::@1 amazonCustomerByEmail
const char * contentType
Definition: libs3.h:729
Definition: libs3.h:467
const char * secretAccessKey
Definition: libs3.h:671
Definition: libs3.h:332
Definition: libs3.h:335
Definition: libs3.h:441
Definition: libs3.h:252
Definition: libs3.h:278
Definition: libs3.h:345
Definition: libs3.h:1067
Definition: libs3.h:327
Definition: libs3.h:317
void S3_destroy_request_context(S3RequestContext *requestContext)
char displayName[S3_MAX_GRANTEE_DISPLAY_NAME_SIZE]
Definition: libs3.h:623
S3CannedAcl cannedAcl
Definition: libs3.h:771
const char * cacheControl
Definition: libs3.h:742
Definition: libs3.h:273
int64_t S3_get_request_context_timeout(S3RequestContext *requestContext)
Definition: libs3.h:334
Definition: libs3.h:299
Definition: libs3.h:445
Definition: libs3.h:250
S3PutObjectDataCallback * putObjectDataCallback
Definition: libs3.h:1101
Definition: libs3.h:336
#define S3_MAX_GRANTEE_USER_ID_SIZE
Definition: libs3.h:184
struct S3PutProperties S3PutProperties
Definition: libs3.h:314
const char * value
Definition: libs3.h:496
const char * ownerDisplayName
Definition: libs3.h:714
const char * ifNotMatchETag
Definition: libs3.h:823
S3UriStyle uriStyle
Definition: libs3.h:661
Definition: libs3.h:348
void S3_list_service(S3Protocol protocol, const char *accessKeyId, const char *secretAccessKey, const char *hostName, S3RequestContext *requestContext, const S3ListServiceHandler *handler, void *callbackData)
Definition: libs3.h:320
Definition: libs3.h:329
const S3NameValue * metaData
Definition: libs3.h:571
Definition: libs3.h:291
Definition: libs3.h:378
Definition: libs3.h:258
Definition: libs3.h:325
void( S3ResponseCompleteCallback)(S3Status status, const S3ErrorDetails *errorDetails, void *callbackData)
Definition: libs3.h:903
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, const S3ResponseHandler *handler, void *callbackData)
Definition: libs3.h:288
uint64_t contentLength
Definition: libs3.h:534
struct S3ListBucketHandler S3ListBucketHandler
Definition: libs3.h:246
struct S3GetObjectHandler S3GetObjectHandler
Definition: libs3.h:340
Definition: libs3.h:251
S3GranteeType granteeType
Definition: libs3.h:586
S3ResponseHandler responseHandler
Definition: libs3.h:1114
const char * contentEncoding
Definition: libs3.h:758
S3Protocol protocol
Definition: libs3.h:655
S3Status( S3GetObjectDataCallback)(int bufferSize, const char *buffer, void *callbackData)
Definition: libs3.h:1012
Definition: libs3.h:639
Definition: libs3.h:276
Definition: libs3.h:397
const char * md5
Definition: libs3.h:736
S3NameValue * extraDetails
Definition: libs3.h:862
Definition: libs3.h:444