Lua
Lua
Download Text File to a String Variable
See more Google Drive Examples
This example demonstrates how to download the content of a text file from Google Drive into a string variable.Chilkat Lua Downloads
local chilkat = require("chilkat")
local 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.
local gAuth = chilkat.AuthGoogle.new()
gAuth.access_token = "GOOGLE-DRIVE-ACCESS-TOKEN"
local rest = chilkat.Rest.new()
-- Connect using TLS.
-- A single REST object, once connected, can be used for many Google Drive REST API calls.
-- The auto-reconnect indicates that if the already-established HTTPS connection is closed,
-- then it will be automatically re-established as needed.
local bAutoReconnect = true
success = rest:connect("www.googleapis.com", 443, true, bAutoReconnect)
-- Provide the authentication credentials (i.e. the access token)
rest:set_auth_google(gAuth)
-- ------------------------------------------------------------------------------
-- To download a file, we must know the file ID.
-- In a previous example (see Build Local Metadata Cache
-- we built a local cache to make it easy to lookup file IDs given a file path.
-- Let's say we want to download "testFolder/abc/123/pigs.json".
-- First we lookup the fileId in the cache. With the fileId, we can download the file.
local gdCache = chilkat.Cache.new()
gdCache.level = 0
gdCache:add_root("C:/ckCache/googleDrive")
local fileId = gdCache:fetch_text("testFolder/abc/123/pigs.json")
if not gdCache.last_method_success then
print("Filepath not found in cache.")
return
end
-- We need to send a GET request like this:
-- GET https://www.googleapis.com/drive/v3/files/fileId?alt=media
-- The fileId is part of the path.
local sbPath = chilkat.StringBuilder.new()
sbPath:append("/drive/v3/files/")
sbPath:append(fileId)
rest:add_query_param("alt", "media")
-- The FullRequestNoBody returns the file content in the response body.
local fileContent = rest:full_request_no_body("GET", sbPath:get_as_string())
if not rest.last_method_success then
print(rest.last_error_text)
return
end
-- A successful response will have a status code equal to 200.
if rest.response_status_code ~= 200 then
print("response status code = " .. rest.response_status_code)
print("response status text = " .. rest.response_status_text)
print("response header: " .. rest.response_header)
return
end
print(fileContent)
print("File downloaded.")