Sample code for 30+ languages & platforms
Xbase++

Bunny Edge Storage - List Files

See more Bunny CDN Examples

Retrieve a list of files and directories located in the given directory.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL oSbResponse
LOCAL nStatusCode
LOCAL oJarr
LOCAL oJson
LOCAL cGuid
LOCAL cStorageZoneName
LOCAL cPath
LOCAL cObjectName
LOCAL nLength
LOCAL cLastChanged
LOCAL nServerId
LOCAL nArrayNumber
LOCAL nIsDirectory
LOCAL cUserId
LOCAL cContentType
LOCAL cDateCreated
LOCAL nStorageZoneId
LOCAL cChecksum
LOCAL cReplicatedZones
LOCAL i
LOCAL nCount_i

nSuccess := 0

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

oHttp := CreateObject("Chilkat.Http")

//  Use the "Password" from the "FTP & HTTP API Access" console web page for your Bunny storage zone.
oHttp:SetRequestHeader("AccessKey", "YOUR_FTP_AND_HTTP_PASSWORD")

//  Storage Endpoints:
//  The storage API endpoint depends on the primary storage region of your storage zone. You can also find this in the FTP & HTTP API Information of your storage zone.

//  Falkenstein: storage.bunnycdn.com
//  New York: ny.storage.bunnycdn.com
//  Los Angeles: la.storage.bunnycdn.com
//  Singapore: sg.storage.bunnycdn.com
//  Sydney: syd.storage.bunnycdn.com
//  London: uk.storage.bunnycdn.com
//  ... (possibly others??)

oSbResponse := CreateObject("Chilkat.StringBuilder")

//  Change the "storageZoneName" to your actual storage zone name.
nSuccess := oHttp:QuickGetSb("https://uk.storage.bunnycdn.com/storageZoneName/testDir/", oSbResponse)
IF (nSuccess == 0)
    ? oHttp:LastErrorText
    oHttp:destroy()
    oSbResponse:destroy()
    RETURN
ENDIF

nStatusCode := oHttp:LastStatus
? "Status code = " + Str(nStatusCode)

IF (nStatusCode != 200)
    ? oSbResponse:GetAsString()
    ? "Failed."
    oHttp:destroy()
    oSbResponse:destroy()
    RETURN
ENDIF

oJarr := CreateObject("Chilkat.JsonArray")
oJarr:LoadSb(oSbResponse)
oJarr:EmitCompact := 0

? oJarr:Emit()

//  Here is a sample response.  Parsing code is shown below..

//  [
//    {
//      "Guid": "ebd9ccff-faf7-449d-9c71-8662b9f3cf41",
//      "StorageZoneName": "chilkat",
//      "Path": "/chilkat/testDir/",
//      "ObjectName": "seahorse.jpg",
//      "Length": 24388,
//      "LastChanged": "2023-04-21T15:59:08.382",
//      "ServerId": 586,
//      "ArrayNumber": 0,
//      "IsDirectory": false,
//      "UserId": "6d26ab35-2914-422c-9378-d51f38166e53",
//      "ContentType": "",
//      "DateCreated": "2023-04-21T15:59:08.382",
//      "StorageZoneId": 266805,
//      "Checksum": "0503558E7B4D141C067BEECFD06F87F6F58B81E37918310F82C7C4077D27BD1D",
//      "ReplicatedZones": "SE,DE,LA,SG,JH,BR,SYD,NY"
//    },
//    {
//      "Guid": "e74b85f8-4d5d-459e-a2fc-0fcfa8c926aa",
//      "StorageZoneName": "chilkat",
//      "Path": "/chilkat/testDir/",
//      "ObjectName": "seal.jpg",
//      "Length": 342708,
//      "LastChanged": "2023-04-21T15:59:08.763",
//      "ServerId": 586,
//      "ArrayNumber": 2,
//      "IsDirectory": false,
//      "UserId": "6d26ab35-2914-422c-9378-d51f38166e53",
//      "ContentType": "",
//      "DateCreated": "2023-04-21T15:59:08.763",
//      "StorageZoneId": 266805,
//      "Checksum": "C95F946A0299CE39C20A072B3DC581446B2EE2D94CA93901B58604F4EFB8AAB5",
//      "ReplicatedZones": "DE,SE,SG,LA,JH,BR,SYD,NY"
//    },
//    {
//      "Guid": "ca80cdbd-c6cf-445d-b367-0b33de7ae65a",
//      "StorageZoneName": "chilkat",
//      "Path": "/chilkat/testDir/",
//      "ObjectName": "university.jpg",
//      "Length": 277581,
//      "LastChanged": "2023-04-21T15:59:10.142",
//      "ServerId": 586,
//      "ArrayNumber": 0,
//      "IsDirectory": false,
//      "UserId": "6d26ab35-2914-422c-9378-d51f38166e53",
//      "ContentType": "",
//      "DateCreated": "2023-04-21T15:59:10.142",
//      "StorageZoneId": 266805,
//      "Checksum": "96A10EAA1B778C066739A6233206022DB219B67A8775401D7865F40E6DD83571",
//      "ReplicatedZones": "DE,SE,SG,JH,BR,LA,SYD,NY"
//    }
//  ]

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

i := 0
nCount_i := oJarr:Size
DO WHILE i < nCount_i
    oJson := oJarr:ObjectAt(i)
    cGuid := oJson:StringOf("Guid")
    cStorageZoneName := oJson:StringOf("StorageZoneName")
    cPath := oJson:StringOf("Path")
    cObjectName := oJson:StringOf("ObjectName")
    nLength := oJson:IntOf("Length")
    cLastChanged := oJson:StringOf("LastChanged")
    nServerId := oJson:IntOf("ServerId")
    nArrayNumber := oJson:IntOf("ArrayNumber")
    nIsDirectory := oJson:BoolOf("IsDirectory")
    cUserId := oJson:StringOf("UserId")
    cContentType := oJson:StringOf("ContentType")
    cDateCreated := oJson:StringOf("DateCreated")
    nStorageZoneId := oJson:IntOf("StorageZoneId")
    cChecksum := oJson:StringOf("Checksum")
    cReplicatedZones := oJson:StringOf("ReplicatedZones")
    oJson:destroy()
    i := i + 1
ENDDO

oHttp:destroy()
oSbResponse:destroy()
oJarr:destroy()