37 #include <sys/select.h>
130 #define S3_MAX_HOSTNAME_SIZE 255
135 #define S3_DEFAULT_HOSTNAME "s3.amazonaws.com"
142 #define S3_MAX_BUCKET_NAME_SIZE 255
147 #define S3_MAX_KEY_SIZE 1024
154 #define S3_MAX_METADATA_SIZE 2048
160 #define S3_METADATA_HEADER_NAME_PREFIX "x-amz-meta-"
170 #define S3_MAX_METADATA_COUNT \
171 (S3_MAX_METADATA_SIZE / (sizeof(S3_METADATA_HEADER_NAME_PREFIX "nv") - 1))
179 #define S3_MAX_ACL_GRANT_COUNT 100
186 #define S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE 128
193 #define S3_MAX_GRANTEE_USER_ID_SIZE 128
200 #define S3_MAX_GRANTEE_DISPLAY_NAME_SIZE 128
208 #define S3_MAX_AUTHENTICATED_QUERY_STRING_SIZE \
210 sizeof("?AWSAccessKeyId=") + 32 + sizeof("&Expires=") + 32 + \
211 sizeof("&Signature=") + 28 + 1)
219 #define S3_INIT_WINSOCK 1
227 #define S3_INIT_VERIFY_PEER 2
234 #define S3_INIT_ALL (S3_INIT_WINSOCK)
240 #define S3_DEFAULT_REGION "us-east-1"
1037 void *callbackData);
1059 const char *ownerDisplayName,
1060 const char *bucketName,
1061 int64_t creationDateSeconds,
1062 void *callbackData);
1096 const char *nextMarker,
1099 int commonPrefixesCount,
1100 const char **commonPrefixes,
1101 void *callbackData);
1123 void *callbackData);
1145 void *callbackData);
1166 void *callbackData);
1193 (
int isTruncated,
const char *nextKeyMarker,
1194 const char *nextUploadIdMarker,
int uploadsCount,
1196 const char **commonPrefixes,
void *callbackData);
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);
1247 void *callbackData);
1481 const char *defaultS3HostName);
1574 int *aclGrantCountReturn,
S3AclGrant *aclGrants);
1657 void *setupCurlCallbackData);
1714 int *requestsRemainingReturn);
1768 fd_set *readFdSet, fd_set *writeFdSet,
1769 fd_set *exceptFdSet,
int *maxFd);
1835 const char *key,
int expires,
const char *resource,
1836 const char *httpMethod);
1866 const char *secretAccessKey,
const char *securityToken,
1867 const char *hostName,
const char *authRegion,
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,
1948 const char *secretAccessKey,
const char *securityToken,
1949 const char *hostName,
const char *bucketName,
1951 const char *locationConstraint,
1983 const char *accessKeyId,
const char *secretAccessKey,
1984 const char *securityToken,
const char *hostName,
1985 const char *bucketName,
const char *authRegion,
2013 const char *prefix,
const char *marker,
2014 const char *delimiter,
int maxkeys,
2046 uint64_t contentLength,
2089 const char *key,
const char *destinationBucket,
2090 const char *destinationKey,
2092 int64_t *lastModifiedReturn,
int eTagReturnSize,
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,
2145 int64_t *lastModifiedReturn,
int eTagReturnSize,
2175 uint64_t startByte, uint64_t byteCount,
2254 char *ownerId,
char *ownerDisplayName,
2255 int *aclGrantCountReturn,
S3AclGrant *aclGrants,
2288 const char *ownerId,
const char *ownerDisplayName,
2289 int aclGrantCount,
const S3AclGrant *aclGrants,
2316 char *lifecycleXmlDocumentReturn,
int lifecycleXmlDocumentBufferSize,
2338 const char *lifecycleXmlDocument,
2385 char *targetBucketReturn,
2386 char *targetPrefixReturn,
2387 int *aclGrantCountReturn,
2392 void *callbackData);
2426 const char *targetBucket,
2427 const char *targetPrefix,
int aclGrantCount,
2432 void *callbackData);
2461 void *callbackData);
2489 int seq,
const char *upload_id,
int partContentLength,
2492 void *callbackData);
2517 const char *upload_id,
2521 void *callbackData);
2551 const char *partnumbermarker,
2552 const char *uploadid,
const char *encodingtype,
2573 const char *uploadId,
2610 const char *prefix,
const char *keymarker,
2611 const char *uploadidmarker,
2612 const char *encodingtype,
const char *delimiter,
2616 void *callbackData);
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
struct S3MultipartCommitHandler S3MultipartCommitHandler
S3ResponseHandler responseHandler
Definition: libs3.h:1387
const char * name
Definition: libs3.h:532
const char * key
Definition: libs3.h:749
struct S3BucketContext S3BucketContext
struct S3ListServiceHandler S3ListServiceHandler
S3Status S3_runonce_request_context(S3RequestContext *requestContext, int *requestsRemainingReturn)
S3GranteeType
Definition: libs3.h:454
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
void S3_set_request_context_verify_peer(S3RequestContext *requestContext, int verifyPeer)
int64_t expires
Definition: libs3.h:882
struct S3MultipartInitialHandler S3MultipartInitialHandler
int metaDataCount
Definition: libs3.h:604
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)
S3Protocol
Definition: libs3.h:416
S3Status( S3ListBucketCallback)(int isTruncated, const char *nextMarker, int contentsCount, const S3ListBucketContent *contents, int commonPrefixesCount, const char **commonPrefixes, void *callbackData)
Definition: libs3.h:1095
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)
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)
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
int64_t ifNotModifiedSince
Definition: libs3.h:939
S3ResponseHandler responseHandler
Definition: libs3.h:1309
struct S3ListMultipartUploadsHandler S3ListMultipartUploadsHandler
int64_t lastModified
Definition: libs3.h:829
S3ListBucketCallback * listBucketCallback
Definition: libs3.h:1336
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)
S3Status S3_runall_request_context(S3RequestContext *requestContext)
const char * ifMatchETag
Definition: libs3.h:947
uint64_t size
Definition: libs3.h:766
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)
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
void( S3ResponseCompleteCallback)(S3Status status, const S3ErrorDetails *errorDetails, void *callbackData)
Definition: libs3.h:1035
const char * key
Definition: libs3.h:792
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
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)
S3Status( S3MultipartInitialResponseCallback)(const char *upload_id, void *callbackData)
Definition: libs3.h:1165
union S3AclGrant::@0 grantee
struct S3AbortMultipartUploadHandler S3AbortMultipartUploadHandler
void S3_delete_object(const S3BucketContext *bucketContext, const char *key, S3RequestContext *requestContext, int timeoutMs, const S3ResponseHandler *handler, void *callbackData)
struct S3ListPartsHandler S3ListPartsHandler
S3CannedAcl
Definition: libs3.h:502
const char * requestId2
Definition: libs3.h:559
uint64_t partNumber
Definition: libs3.h:830
#define S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE
Definition: libs3.h:186
S3ResponseHandler responseHandler
Definition: libs3.h:1328
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)
const char * ownerId
Definition: libs3.h:772
struct S3AclGrant S3AclGrant
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
const char * resource
Definition: libs3.h:975
const char * eTag
Definition: libs3.h:761
S3Status( S3ListServiceCallback)(const char *ownerId, const char *ownerDisplayName, const char *bucketName, int64_t creationDateSeconds, void *callbackData)
Definition: libs3.h:1058
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)
const char * authRegion
Definition: libs3.h:735
char useServerSideEncryption
Definition: libs3.h:915
S3Status S3_get_request_context_fdsets(S3RequestContext *requestContext, fd_set *readFdSet, fd_set *writeFdSet, fd_set *exceptFdSet, int *maxFd)
struct S3ListBucketContent S3ListBucketContent
S3PutObjectDataCallback * putObjectDataCallback
Definition: libs3.h:1405
int64_t lastModified
Definition: libs3.h:598
int S3_status_is_retryable(S3Status status)
S3Status( S3ResponsePropertiesCallback)(const S3ResponseProperties *properties, void *callbackData)
Definition: libs3.h:1016
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)
char emailAddress[S3_MAX_GRANTEE_EMAIL_ADDRESS_SIZE]
Definition: libs3.h:661
const char * contentDispositionFilename
Definition: libs3.h:868
#define S3_MAX_GRANTEE_DISPLAY_NAME_SIZE
Definition: libs3.h:200
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
struct S3PutObjectHandler S3PutObjectHandler
S3GetObjectDataCallback * getObjectDataCallback
Definition: libs3.h:1379
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
int64_t lastModified
Definition: libs3.h:755
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
S3ResponseHandler responseHandler
Definition: libs3.h:1349
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
S3Status S3_generate_authenticated_query_string(char *buffer, const S3BucketContext *bucketContext, const char *key, int expires, const char *resource, const char *httpMethod)
int64_t ifModifiedSince
Definition: libs3.h:931
struct S3ListPart S3ListPart
S3Status
Definition: libs3.h:252
S3MultipartInitialResponseCallback * responseXmlCallback
Definition: libs3.h:1389
const char * ownerDisplayName
Definition: libs3.h:808
S3Status(* S3SetupCurlCallback)(void *curlMulti, void *curlEasy, void *setupData)
Definition: libs3.h:1268
S3Status S3_process_request_context(S3RequestContext *requestContext)
const char * eTag
Definition: libs3.h:823
S3ResponseHandler responseHandler
Definition: libs3.h:1434
struct S3AclGrant::@0::@1 amazonCustomerByEmail
const char * contentType
Definition: libs3.h:846
const char * secretAccessKey
Definition: libs3.h:724
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
int64_t S3_get_request_context_timeout(S3RequestContext *requestContext)
S3MultipartCommitResponseCallback * responseXmlCallback
Definition: libs3.h:1406
S3PutObjectDataCallback * putObjectDataCallback
Definition: libs3.h:1357
#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)
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)
S3ResponseHandler responseHandler
Definition: libs3.h:1414
const char * uploadId
Definition: libs3.h:794
const S3NameValue * metaData
Definition: libs3.h:612
const char * storageClass
Definition: libs3.h:810
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)
const char * securityToken
Definition: libs3.h:729
uint64_t contentLength
Definition: libs3.h:575
struct S3ListBucketHandler S3ListBucketHandler
struct S3GetObjectHandler S3GetObjectHandler
S3Status( S3MultipartCommitResponseCallback)(const char *location, const char *etag, void *callbackData)
Definition: libs3.h:1245
void S3_initiate_multipart(S3BucketContext *bucketContext, const char *key, S3PutProperties *putProperties, S3MultipartInitialHandler *handler, S3RequestContext *requestContext, int timeoutMs, void *callbackData)
S3GranteeType granteeType
Definition: libs3.h:639
S3ResponseHandler responseHandler
Definition: libs3.h:1370
S3Status( S3GetObjectDataCallback)(int bufferSize, const char *buffer, void *callbackData)
Definition: libs3.h:1144
const char * contentEncoding
Definition: libs3.h:875
S3Protocol protocol
Definition: libs3.h:708
const char * md5
Definition: libs3.h:853
S3NameValue * extraDetails
Definition: libs3.h:994
int( S3PutObjectDataCallback)(int bufferSize, char *buffer, void *callbackData)
Definition: libs3.h:1122
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)