First Google Drive API files.list request returning an array of Hashes, after that, subsequent requests returning an array of File Resources. Why?

StackOverflow https://stackoverflow.com/questions/14987596

Question

I'm querying the Google API to list all files in the drive using the Google API official gem for ruby. I'm using the example given in the Google developers page - https://developers.google.com/drive/v2/reference/files/list

The first request I made returns in the "items" an array of ruby "Hashes". The next requests return in the "items" an array of either "Google::APIClient::Schema::Drive::V2::File" or "Google::APIClient::Schema::Drive::V2::ParentReference" (the reason behind each type also buggs me).

Does anyone know why this happens? At the reference page of "files.list" none is said about changing the type of the results.

def self.retrieve_all_files(client)
  drive = client.discovered_api('drive', 'v2')
  result = Array.new
  page_token = nil
  begin
    parameters = {}
    if page_token.to_s != ''
      parameters['pageToken'] = page_token
    end
    api_result = client.execute(
        :api_method => drive.files.list,
        :parameters => parameters)
    if api_result.status == 200
      files = api_result.data
      result.concat(files.items)
      page_token = files.next_page_token
    else
      puts "An error occurred: #{result.data['error']['message']}"
      page_token = nil
    end
  end while page_token.to_s != ''
  result
end

EDIT:

I couldn't solve the problem yet, but I manage to understand it better:

When the first request to the API is made, after the authorization is granted by the user, the "file.list" returns an array of Hashes at "Items" attribute of the File resource. Each of this Hashes is like a File resource, with all the attributes of the File, the difference is just in the type of the access. For example: the title of the file can be accessed like this "File['title']".

After the first request is made, all the subsequent requests return an array of File resources, that can be accessed like this "File.title".

Was it helpful?

Solution

FYI, this was a bug in the client lib. Using the latest version should fix it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top