Sample code for 30+ languages & platforms
Swift

Google Cloud SQL - Stop Database Instance

See more Google Cloud SQL Examples

Demonstrates how to stop a Google Cloud SQL database instance.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

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

    // In this example, Get Google Cloud SQL OAuth2 Access Token, 
    // the service account access token was saved to a text file.  This example fetches the access token from the file..
    let sbToken = CkoStringBuilder()!
    sbToken.loadFile(path: "qa_data/tokens/google_cloud_sql_access_token.txt", charset: "utf-8")

    let http = CkoHttp()!

    // Implements the following CURL command:

    // curl -X PATCH \
    // -H "Authorization: Bearer "$(gcloud auth print-access-token) \
    // -H "Content-Type: application/json; charset=utf-8" \
    // -d '{
    //   "settings": {
    //     "activationPolicy": "NEVER" 
    //   }
    // }' \
    // https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

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

    // The following JSON is sent in the request body.

    // {
    //   "settings": {
    //     "activationPolicy": "NEVER"
    //   }
    // }

    let json = CkoJsonObject()!
    json.updateString(jsonPath: "settings.activationPolicy", value: "NEVER")

    // Causes the "Authorization: Bearer "$(gcloud auth print-access-token)" header to be added.
    http.authToken = sbToken.getAsString()

    http.setRequestHeader(name: "Content-Type", value: "application/json; charset=utf-8")

    let sbRequestBody = CkoStringBuilder()!
    json.emitSb(sb: sbRequestBody)

    // Replace "project-id" with your actual Google project ID.
    // Replace "instance-id" with your database instance ID, which is the name of your database.  (For example, when I created my test database I named it "chilkat", and therefore my instance-id is "chilkat".)
    let resp = CkoHttpResponse()!
    success = http.httpSb(verb: "PATCH", url: "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", sb: sbRequestBody, charset: "utf-8", contentType: "application/json", response: resp)
    if success == false {
        print("\(http.lastErrorText!)")
        return
    }

    let sbResponseBody = CkoStringBuilder()!
    resp.getBodySb(sb: sbResponseBody)
    let jResp = CkoJsonObject()!
    jResp.loadSb(sb: sbResponseBody)
    jResp.emitCompact = false

    print("Response Body:")
    print("\(jResp.emit()!)")

    var respStatusCode: Int = resp.statusCode.intValue
    print("Response Status Code = \(respStatusCode)")
    if respStatusCode == 401 {
        print("It may be that your access token expired.")
        print("Try refreshing the access token by re-fetching it.")
    }

    if respStatusCode >= 400 {
        print("Response Header:")
        print("\(resp.header!)")
        print("Failed.")
        return
    }

    // Sample JSON response:
    // (Sample code for parsing the JSON response is shown below)

    // {
    //   "kind": "sql#operation",
    //   "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
    //   "status": "PENDING",
    //   "user": "user@example.com",
    //   "insertTime": "2020-01-20T21:30:35.667Z",
    //   "operationType": "UPDATE",
    //   "name": "operation-id",
    //   "targetId": "instance-id",
    //   "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
    //   "targetProject": "project-id"
    // }

    // Sample code for parsing the JSON response...
    // Use the following online tool to generate parsing code from sample JSON:
    // Generate Parsing Code from JSON

    var kind: String? = jResp.string(of: "kind")
    var targetLink: String? = jResp.string(of: "targetLink")
    var status: String? = jResp.string(of: "status")
    var user: String? = jResp.string(of: "user")
    var insertTime: String? = jResp.string(of: "insertTime")
    var operationType: String? = jResp.string(of: "operationType")
    var name: String? = jResp.string(of: "name")
    var targetId: String? = jResp.string(of: "targetId")
    var selfLink: String? = jResp.string(of: "selfLink")
    var targetProject: String? = jResp.string(of: "targetProject")

}