Sample code for 30+ languages & platforms
DataFlex

Backblaze S3 List Bucket Objects

See more Backblaze S3 Examples

Demonstrates how to list the objects in a bucket.

The Chilkat S3 functions in the HTTP class are compatible with the Backblaze service. However, because of some specific issues, Chilkat v9.5.0.89 or later is needed.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    String sBucketName
    String sStrXml
    Handle hoXml
    String sETag
    String sKey
    String sLastModified
    String sID
    String sSizeDecimalStr
    String sStorageClass
    String sListBucketResult_xmlns
    Integer i
    Integer iCount_i
    String sIsTruncated
    Integer iMaxKeys
    String sName
    String sTemp1
    Integer iTemp1
    Boolean bTemp1

    Move False To iSuccess

    // This example assumes the Chilkat HTTP API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // keyID = Access Key ID or Access Key
    Set ComAwsAccessKey Of hoHttp To "access-key"

    // applicationKey = Secret Access Key or Secret Key
    Set ComAwsSecretKey Of hoHttp To "secret-key"

    // Region is the 2nd part of your S3 Endpoint
    Set ComAwsEndpoint Of hoHttp To "s3.us-west-002.backblazeb2.com"

    Move "chilkat-test" To sBucketName

    Get ComS3_ListBucketObjects Of hoHttp sBucketName To sStrXml
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 <> True) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComLastStatus Of hoHttp To iTemp1
    Showln "Response status code = " iTemp1

    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End
    Get ComLoadXml Of hoXml sStrXml To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoXml To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // If the response status code was not 200, then the XML response is not a 
    // listing of objects, but instead contains error information.
    Get ComLastStatus Of hoHttp To iTemp1
    If (iTemp1 <> 200) Begin
        Get ComGetXml Of hoXml To sTemp1
        Showln sTemp1
        Showln "Failed."
        Procedure_Return
    End

    // A sample response is shown below.
    Get ComGetXml Of hoXml To sTemp1
    Showln sTemp1
    Showln "----"

    // Use this online tool to generate parsing code from sample XML: 
    // Generate Parsing Code from XML

    // <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    // <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    //     <Contents>
    //         <ETag>"303fb46cf341094fef6274b7789cd6aa"</ETag>
    //         <Key>orchard.json</Key>
    //         <LastModified>2021-10-30T14:45:52.000Z</LastModified>
    //         <Owner>
    //             <ID>f2ebbc5f792c</ID>
    //             <DisplayName/>
    //         </Owner>
    //         <Size>22</Size>
    //         <StorageClass>STANDARD</StorageClass>
    //     </Contents>
    //     <Contents>
    //         <ETag>"a8551f0a5437f43a796fca7623ee9232"</ETag>
    //         <Key>seahorse.jpg</Key>
    //         <LastModified>2021-10-30T14:38:53.000Z</LastModified>
    //         <Owner>
    //             <ID>f2ebbc5f792c</ID>
    //             <DisplayName/>
    //         </Owner>
    //         <Size>24388</Size>
    //         <StorageClass>STANDARD</StorageClass>
    //     </Contents>
    //     <IsTruncated>false</IsTruncated>
    //     <MaxKeys>1000</MaxKeys>
    //     <Name>chilkat-test</Name>
    //     <Prefix/>
    //     <Marker/>
    // </ListBucketResult>

    Get ComGetAttrValue Of hoXml "xmlns" To sListBucketResult_xmlns
    Move 0 To i
    Get ComNumChildrenHavingTag Of hoXml "Contents" To iCount_i
    While (i < iCount_i)
        Set ComI Of hoXml To i
        Get ComGetChildContent Of hoXml "Contents[i]|ETag" To sETag
        Get ComGetChildContent Of hoXml "Contents[i]|Key" To sKey
        Get ComGetChildContent Of hoXml "Contents[i]|LastModified" To sLastModified
        Get ComGetChildContent Of hoXml "Contents[i]|Owner|ID" To sID
        Get ComGetChildContent Of hoXml "Contents[i]|Size" To sSizeDecimalStr
        Get ComGetChildContent Of hoXml "Contents[i]|StorageClass" To sStorageClass
        Move (i + 1) To i
    Loop

    Get ComGetChildContent Of hoXml "IsTruncated" To sIsTruncated
    Get ComGetChildIntValue Of hoXml "MaxKeys" To iMaxKeys
    Get ComGetChildContent Of hoXml "Name" To sName


End_Procedure