Sample code for 30+ languages & platforms
Swift

Search for Files in Google Drive

See more Google Drive Examples

This example follows the same methodology for listing all files in Google Drive in pages, but applies a search filter. It shows how to apply a query parameter for filtering the file results. See the Google Drive Files list for more optional HTTP parameters.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    success = true

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

    // This example uses a previously obtained access token having permission for the 
    // Google Drive scope.

    let gAuth = CkoAuthGoogle()!
    gAuth.accessToken = "GOOGLE-DRIVE-ACCESS-TOKEN"

    let rest = CkoRest()!

    // Connect using TLS.
    var bAutoReconnect: Bool = true
    success = rest.connect(hostname: "www.googleapis.com", port: 443, tls: true, autoReconnect: bAutoReconnect)

    // Provide the authentication credentials (i.e. the access token)
    rest.setAuthGoogle(authProvider: gAuth)

    // Get 5 results per page for testing.  (The default page size is 100, with a max of 1000.
    rest.addQueryParam(name: "pageSize", value: "5")

    // Our search filter is to list all files containing ".jpg" (i.e. all JPG image files)
    rest.addQueryParam(name: "q", value: "name contains '.jpg'")

    let json = CkoJsonObject()!
    var i: Int
    var numFiles: Int

    // Send the request for the 1st page.
    var jsonResponse: String? = rest.fullRequestNoBody(httpVerb: "GET", uriPath: "/drive/v3/files")

    var pageNumber: Int = 1
    var pageToken: String?
    var bContinueLoop: Bool = rest.lastMethodSuccess && (rest.responseStatusCode.intValue == 200)

    while bContinueLoop == true {

        print("---- Page \(pageNumber) ----")

        // Iterate over each file in the response and show the name, id, and mimeType.
        json.load(json: jsonResponse)

        numFiles = json.size(ofArray: "files").intValue
        i = 0
        while i < numFiles {
            json.i = i
            print("name: \(json.string(of: "files[i].name")!)")
            print("id: \(json.string(of: "files[i].id")!)")
            print("mimeType: \(json.string(of: "files[i].mimeType")!)")
            print("-")
            i = i + 1
        }

        // Get the next page of files.
        // If the "nextPageToken" is present in the JSON response, then use it in the "pageToken" parameter
        // for the next request.   If no "nextPageToken" was present, then this was the last page of files.
        pageToken = json.string(of: "nextPageToken")
        bContinueLoop = false
        var bHasMorePages: Bool = json.lastMethodSuccess
        if bHasMorePages == true {
            rest.clearAllQueryParams()
            rest.addQueryParam(name: "pageSize", value: "5")
            rest.addQueryParam(name: "pageToken", value: pageToken)
            rest.addQueryParam(name: "q", value: "name contains '.jpg'")

            jsonResponse = rest.fullRequestNoBody(httpVerb: "GET", uriPath: "/drive/v3/files")
            bContinueLoop = rest.lastMethodSuccess && (rest.responseStatusCode.intValue == 200)
            pageNumber = pageNumber + 1
        }

    }

    if rest.lastMethodSuccess != true {
        print("\(rest.lastErrorText!)")
        return
    }

    // A successful response will have a status code equal to 200.
    if rest.responseStatusCode.intValue != 200 {
        print("response status code = \(rest.responseStatusCode.intValue)")
        print("response status text = \(rest.responseStatusText!)")
        print("response header: \(rest.responseHeader!)")
        print("response JSON: \(jsonResponse!)")
        return
    }


}