Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Wasabi List Bucket ObjectsSee more Wasabi ExamplesDemonstrates how to download and parse XML for the list of objects in a bucket.
IncludeFile "CkXml.pb" IncludeFile "CkHttp.pb" Procedure ChilkatExample() ; This example assumes the Chilkat HTTP API to have been previously unlocked. ; See Global Unlock Sample for sample code. http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Insert your access key here: CkHttp::setCkAwsAccessKey(http, "access-key") ; Insert your secret key here: CkHttp::setCkAwsSecretKey(http, "secret-key") ; Use the endpoint matching the bucket's region. CkHttp::setCkAwsEndpoint(http, "s3.us-west-1.wasabisys.com") bucketName.s = "chilkattest" strXml.s = CkHttp::ckS3_ListBucketObjects(http,bucketName) If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) ProcedureReturn EndIf Debug "Response status code = " + Str(CkHttp::ckLastStatus(http)) xml.i = CkXml::ckCreate() If xml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkXml::ckLoadXml(xml,strXml) If success <> 1 Debug CkXml::ckLastErrorText(xml) CkHttp::ckDispose(http) CkXml::ckDispose(xml) ProcedureReturn EndIf ; If the response status code was not 200, then the XML response is not a ; listing of objects, but instead contains error information. If CkHttp::ckLastStatus(http) <> 200 Debug CkXml::ckGetXml(xml) Debug "Failed." CkHttp::ckDispose(http) CkXml::ckDispose(xml) ProcedureReturn EndIf ; A sample response is shown below. Debug CkXml::ckGetXml(xml) Debug "----" ; Use this online tool to generate parsing code from sample XML: ; Generate Parsing Code from XML ; <?xml version="1.0" encoding="UTF-8"?> ; <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> ; <Name>chilkattest</Name> ; <Prefix/> ; <Marker/> ; <MaxKeys>1000</MaxKeys> ; <IsTruncated>false</IsTruncated> ; <Contents> ; <Key>orchard.json</Key> ; <LastModified>2021-10-27T22:58:49.000Z</LastModified> ; <ETag>"303fb46cf341094fef6274b7789cd6aa"</ETag> ; <Size>22</Size> ; <Owner> ; <ID>1039F31570DBC320E89D391632FCA06FE6D10CBB2ADBD0BF6439BB1DA0C3FAD6</ID> ; <DisplayName>admin</DisplayName> ; </Owner> ; <StorageClass>STANDARD</StorageClass> ; </Contents> ; <Contents> ; <Key>seahorse.jpg</Key> ; <LastModified>2021-10-27T22:35:29.000Z</LastModified> ; <ETag>"a8551f0a5437f43a796fca7623ee9232"</ETag> ; <Size>24388</Size> ; <Owner> ; <ID>1039F31570DBC320E89D391632FCA06FE6D10CBB2ADBD0BF6439BB1DA0C3FAD6</ID> ; <DisplayName>admin</DisplayName> ; </Owner> ; <StorageClass>STANDARD</StorageClass> ; </Contents> ; <Contents> ; <Key>seahorse2.jpg</Key> ; <LastModified>2021-10-27T22:03:51.000Z</LastModified> ; <ETag>"a8551f0a5437f43a796fca7623ee9232"</ETag> ; <Size>24388</Size> ; <Owner> ; <ID>1039F31570DBC320E89D391632FCA06FE6D10CBB2ADBD0BF6439BB1DA0C3FAD6</ID> ; <DisplayName>admin</DisplayName> ; </Owner> ; <StorageClass>STANDARD</StorageClass> ; </Contents> ; </ListBucketResult> Key.s LastModified.s ETag.s SizeDecimalStr.s ID.s DisplayName.s StorageClass.s ListBucketResult_xmlns.s = CkXml::ckGetAttrValue(xml,"xmlns") Name.s = CkXml::ckGetChildContent(xml,"Name") MaxKeys.i = CkXml::ckGetChildIntValue(xml,"MaxKeys") IsTruncated.s = CkXml::ckGetChildContent(xml,"IsTruncated") i.i = 0 count_i.i = CkXml::ckNumChildrenHavingTag(xml,"Contents") While i < count_i CkXml::setCkI(xml, i) Key = CkXml::ckGetChildContent(xml,"Contents[i]|Key") LastModified = CkXml::ckGetChildContent(xml,"Contents[i]|LastModified") ETag = CkXml::ckGetChildContent(xml,"Contents[i]|ETag") SizeDecimalStr = CkXml::ckGetChildContent(xml,"Contents[i]|Size") ID = CkXml::ckGetChildContent(xml,"Contents[i]|Owner|ID") DisplayName = CkXml::ckGetChildContent(xml,"Contents[i]|Owner|DisplayName") StorageClass = CkXml::ckGetChildContent(xml,"Contents[i]|StorageClass") Debug Str(i) + ": " + Key i = i + 1 Wend CkHttp::ckDispose(http) CkXml::ckDispose(xml) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.