PureBasic
PureBasic
Google Drive Multipart Upload String
See more REST Examples
Demonstrates a file upload to Google Drive where the contents of the file are contained in a string variable.Chilkat PureBasic Downloads
IncludeFile "CkAuthGoogle.pb"
IncludeFile "CkRest.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example will upload a file to Google Drive.
success = 1
; It requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
gAuth.i = CkAuthGoogle::ckCreate()
If gAuth.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkAuthGoogle::setCkScope(gAuth, "https://www.googleapis.com/auth/drive")
CkAuthGoogle::setCkSubEmailAddress(gAuth, "some.user@example.com")
CkAuthGoogle::setCkExpireNumSeconds(gAuth, 3600)
; Obtain an access token as shown in one of the following examples:
; See Get Access Token using a Service Account JSON Key
; See Get Access Token using a P12 File
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect using TLS.
bAutoReconnect.i = 1
success = CkRest::ckConnect(rest,"www.googleapis.com",443,1,bAutoReconnect)
; Provide the authentication credentials (i.e. the access key)
success = CkRest::ckSetAuthGoogle(rest,gAuth)
; A multipart upload to Google Drive needs a multipart/related Content-Type
success = CkRest::ckAddHeader(rest,"Content-Type","multipart/related")
; Specify each part of the request.
; The 1st part is JSON with information about the file.
CkRest::setCkPartSelector(rest, "1")
success = CkRest::ckAddHeader(rest,"Content-Type","application/json; charset=UTF-8")
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJsonObject::ckAddStringAt(json,-1,"title","helloWorld.txt")
success = CkJsonObject::ckAddStringAt(json,-1,"description","A simple text file that says Hello World.")
success = CkJsonObject::ckAddStringAt(json,-1,"mimeType","text/plain")
success = CkRest::ckSetMultipartBodyString(rest,CkJsonObject::ckEmit(json))
; The 2nd part is the file content.
; In this case, we'll upload a simple text file containing "Hello World!"
CkRest::setCkPartSelector(rest, "2")
success = CkRest::ckAddHeader(rest,"Content-Type","text/plain")
success = CkRest::ckSetMultipartBodyString(rest,"Hello World!")
; POST https://www.googleapis.com/upload/drive/v2/files
jsonResponse.s = CkRest::ckFullRequestMultipart(rest,"POST","/upload/drive/v2/files?uploadType=multipart")
If CkRest::ckLastMethodSuccess(rest) <> 1
Debug CkRest::ckLastErrorText(rest)
CkAuthGoogle::ckDispose(gAuth)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
; Show the JSON response.
Debug "Response Status Code: " + Str(CkRest::ckResponseStatusCode(rest))
Debug "Json Response: " + jsonResponse
CkAuthGoogle::ckDispose(gAuth)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndProcedure