Sample code for 30+ languages & platforms
Go

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 Go Downloads

Go
    success := 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.

    gAuth := chilkat.NewAuthGoogle()
    gAuth.SetAccessToken("GOOGLE-DRIVE-ACCESS-TOKEN")

    rest := chilkat.NewRest()

    // Connect using TLS.
    bAutoReconnect := true
    success = rest.Connect("www.googleapis.com",443,true,bAutoReconnect)

    // Provide the authentication credentials (i.e. the access token)
    rest.SetAuthGoogle(gAuth)

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

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

    json := chilkat.NewJsonObject()
    var i int
    var numFiles int

    // Send the request for the 1st page.
    jsonResponse := rest.FullRequestNoBody("GET","/drive/v3/files")

    pageNumber := 1
    var pageToken *string = new(string)
    bContinueLoop := rest.LastMethodSuccess() && (rest.ResponseStatusCode() == 200)

    for bContinueLoop == true {

        fmt.Println("---- Page ", pageNumber, " ----")

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

        numFiles = json.SizeOfArray("files")
        i = 0
        for i < numFiles {
            json.SetI(i)
            fmt.Println("name: ", *json.StringOf("files[i].name"))
            fmt.Println("id: ", *json.StringOf("files[i].id"))
            fmt.Println("mimeType: ", *json.StringOf("files[i].mimeType"))
            fmt.Println("-")
            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.StringOf("nextPageToken")
        bContinueLoop = false
        bHasMorePages := json.LastMethodSuccess()
        if bHasMorePages == true {
            rest.ClearAllQueryParams()
            rest.AddQueryParam("pageSize","5")
            rest.AddQueryParam("pageToken",*pageToken)
            rest.AddQueryParam("q","name contains '.jpg'")

            jsonResponse = rest.FullRequestNoBody("GET","/drive/v3/files")
            bContinueLoop = rest.LastMethodSuccess() && (rest.ResponseStatusCode() == 200)
            pageNumber = pageNumber + 1
        }

    }

    if rest.LastMethodSuccess() != true {
        fmt.Println(rest.LastErrorText())
        gAuth.DisposeAuthGoogle()
        rest.DisposeRest()
        json.DisposeJsonObject()
        return
    }

    // A successful response will have a status code equal to 200.
    if rest.ResponseStatusCode() != 200 {
        fmt.Println("response status code = ", rest.ResponseStatusCode())
        fmt.Println("response status text = ", rest.ResponseStatusText())
        fmt.Println("response header: ", rest.ResponseHeader())
        fmt.Println("response JSON: ", *jsonResponse)
        gAuth.DisposeAuthGoogle()
        rest.DisposeRest()
        json.DisposeJsonObject()
        return
    }


    gAuth.DisposeAuthGoogle()
    rest.DisposeRest()
    json.DisposeJsonObject()