Swift Google Cloud Storage: List Buckets

Back to Index

Retrieves a list of buckets for a given project.

Documentation: https://cloud.google.com/storage/docs/json_api/v1/buckets/list

CURL Command

curl -X GET https://www.googleapis.com/storage/v1/b \
    --header "Authorization: Bearer CLOUD_STORAGE_TOKEN" \
    --data "project=MY_CLOUD_STORAGE_PROJECT"

Swift Example


func chilkatTest() {
    let rest = CkoRest()
    var success: Bool

    //  URL: https://www.googleapis.com/storage/v1/b
    var bTls: Bool = true
    var port: Int = 443
    var bAutoReconnect: Bool = true
    success = rest.Connect("www.googleapis.com", port: port, tls: bTls, autoReconnect: bAutoReconnect)
    if success != true {
        print("ConnectFailReason: \(rest.ConnectFailReason.intValue)")
        print("\(rest.LastErrorText)")
        return
    }

    rest.AddQueryParam("project", value: "MY_CLOUD_STORAGE_PROJECT")

    rest.AddHeader("Authorization", value: "Bearer CLOUD_STORAGE_TOKEN")

    let sbResponseBody = CkoStringBuilder()
    success = rest.FullRequestNoBodySb("GET", uriPath: "/storage/v1/b", sb: sbResponseBody)
    if success != true {
        print("\(rest.LastErrorText)")
        return
    }

    var respStatusCode: Int = rest.ResponseStatusCode.intValue
    if respStatusCode >= 400 {
        print("Response Status Code = \(respStatusCode)")
        print("Response Header:")
        print("\(rest.ResponseHeader)")
        print("Response Body:")
        print("\(sbResponseBody.GetAsString())")
        return
    }

    let jsonResponse = CkoJsonObject()
    jsonResponse.LoadSb(sbResponseBody)

    //  See the Online Tool for Generating JSON Parse Code
    var i: Int
    var count_i: Int

    var kind: String? = jsonResponse.StringOf("kind")
    i = 0
    count_i = jsonResponse.SizeOfArray("items").intValue
    while i < count_i {
        jsonResponse.I = i
        kind = jsonResponse.StringOf("items[i].kind")
        var id: String? = jsonResponse.StringOf("items[i].id")
        var selfLink: String? = jsonResponse.StringOf("items[i].selfLink")
        var projectNumber: String? = jsonResponse.StringOf("items[i].projectNumber")
        var name: String? = jsonResponse.StringOf("items[i].name")
        var timeCreated: String? = jsonResponse.StringOf("items[i].timeCreated")
        var updated: String? = jsonResponse.StringOf("items[i].updated")
        var metageneration: String? = jsonResponse.StringOf("items[i].metageneration")
        var location: String? = jsonResponse.StringOf("items[i].location")
        var storageClass: String? = jsonResponse.StringOf("items[i].storageClass")
        var etag: String? = jsonResponse.StringOf("items[i].etag")
        i = i + 1
    }


}

Sample JSON Response Body

{
  "kind": "storage#buckets",
  "items": [
    {
      "kind": "storage#bucket",
      "id": "chilkat-bucket",
      "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-bucket",
      "projectNumber": "5332332985",
      "name": "chilkat-bucket",
      "timeCreated": "2018-10-23T00:04:44.507Z",
      "updated": "2018-10-23T00:04:44.507Z",
      "metageneration": "1",
      "location": "US",
      "storageClass": "MULTI_REGIONAL",
      "etag": "CAE="
    },
    {
      "kind": "storage#bucket",
      "id": "chilkat-images",
      "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-images",
      "projectNumber": "5332332985",
      "name": "chilkat-images",
      "timeCreated": "2018-10-23T11:24:43.000Z",
      "updated": "2018-10-23T11:24:43.000Z",
      "metageneration": "1",
      "location": "US",
      "storageClass": "MULTI_REGIONAL",
      "etag": "CAE="
    }
  ]
}