Sample code for 30+ languages & platforms
Swift

S3 List Bucket Objects (Bucket-in-Path)

See more Amazon S3 (new) Examples

Demonstrates how to fetch a list of objects in an S3 bucket, but using the bucket-in-path request format instead of putting the bucket name in the HOST header.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

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

    let rest = CkoRest()!

    // Connect to the Amazon AWS REST server.
    var bTls: Bool = true
    var port: Int = 443
    var bAutoReconnect: Bool = true
    success = rest.connect(hostname: "s3.amazonaws.com", port: port, tls: bTls, autoReconnect: bAutoReconnect)

    // ----------------------------------------------------------------------------
    // Important: For buckets created in regions outside us-east-1,
    // there are three important changes that need to be made.
    // See Working with S3 Buckets in Non-us-east-1 Regions for the details.
    // ----------------------------------------------------------------------------

    // Provide AWS credentials for the REST call.
    let authAws = CkoAuthAws()!
    authAws.accessKey = "AWS_ACCESS_KEY"
    authAws.secretKey = "AWS_SECRET_KEY"
    authAws.serviceName = "s3"
    success = rest.setAuthAws(authProvider: authAws)

    // The bucket name is "chilkat100"
    let sbResponse = CkoStringBuilder()!
    success = rest.fullRequestNoBodySb(httpVerb: "GET", uriPath: "/chilkat100", sb: sbResponse)
    if success != true {
        print("\(rest.lastErrorText!)")
        return
    }

    var statusCode: Int = rest.responseStatusCode.intValue
    print("Response status code = \(statusCode)")

    let xml = CkoXml()!
    xml.loadSb(sb: sbResponse, autoTrim: true)
    print("\(xml.getXml()!)")

    if statusCode != 200 {
        print("Failed.  See error information in the XML.")
        return
    }

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

    var Key: String?
    var LastModified: String?
    var ETag: String?
    var SizeDecimalStr: String?
    var ID: String?
    var DisplayName: String?
    var StorageClass: String?

    var Name: String? = xml.getChildContent(tagPath: "Name")
    var MaxKeys: Int = xml.getChildIntValue(tagPath: "MaxKeys").intValue
    var IsTruncated: String? = xml.getChildContent(tagPath: "IsTruncated")
    var i: Int = 0
    var count_i: Int = xml.numChildrenHavingTag(tag: "Contents").intValue
    while i < count_i {
        xml.i = i
        Key = xml.getChildContent(tagPath: "Contents[i]|Key")
        LastModified = xml.getChildContent(tagPath: "Contents[i]|LastModified")
        ETag = xml.getChildContent(tagPath: "Contents[i]|ETag")
        SizeDecimalStr = xml.getChildContent(tagPath: "Contents[i]|Size")
        ID = xml.getChildContent(tagPath: "Contents[i]|Owner|ID")
        DisplayName = xml.getChildContent(tagPath: "Contents[i]|Owner|DisplayName")
        StorageClass = xml.getChildContent(tagPath: "Contents[i]|StorageClass")
        i = i + 1
    }

    print("Success.")

}