Go
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
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()