PowerBuilder Google Drive: Create a Permission for a File

Back to Index

Creates a new permission for a file. (In this example the permission is created for the file with id = 1BXNQ4sMDD1WibOtcYqgQlwJa0MAa6rTQ)

Documentation: https://developers.google.com/drive/v3/reference/permissions/create


integer li_rc
oleobject loo_Rest
integer li_Success
oleobject loo_Oauth2
oleobject loo_JsonReq
oleobject loo_SbReq
oleobject loo_SbJson
oleobject loo_Json
string ls_Kind
string ls_Id
string ls_Type
string ls_Role
integer li_AllowFileDiscovery

loo_Rest = create oleobject
li_rc = loo_Rest.ConnectToNewObject("Chilkat_9_5_0.Rest")
if li_rc < 0 then
    destroy loo_Rest
    MessageBox("Error","Connecting to COM object failed")
    return
end if

//   Provide a previously obtained OAuth2 access token.
loo_Oauth2 = create oleobject
li_rc = loo_Oauth2.ConnectToNewObject("Chilkat_9_5_0.OAuth2")

loo_Oauth2.AccessToken = "OAUTH2_ACCESS_TOKEN"
loo_Rest.SetAuthOAuth2(loo_Oauth2)

li_Success = loo_Rest.Connect("www.googleapis.com",443,1,1)
if li_Success <> 1 then
    Write-Debug loo_Rest.LastErrorText
    destroy loo_Rest
    destroy loo_Oauth2
    return
end if

loo_Rest.AddQueryParam("includeTeamDriveItems","true")
loo_Rest.AddQueryParam("supportsTeamDrives","true")

//  The following code creates the JSON request body.
//  The JSON created by this code is shown below.
loo_JsonReq = create oleobject
li_rc = loo_JsonReq.ConnectToNewObject("Chilkat_9_5_0.JsonObject")

loo_JsonReq.UpdateString("role","reader")
loo_JsonReq.UpdateString("type","anyone")

loo_SbReq = create oleobject
li_rc = loo_SbReq.ConnectToNewObject("Chilkat_9_5_0.StringBuilder")

loo_JsonReq.EmitSb(loo_SbReq)

loo_Rest.AddHeader("Content-Type","application/json")

loo_SbJson = create oleobject
li_rc = loo_SbJson.ConnectToNewObject("Chilkat_9_5_0.StringBuilder")

li_Success = loo_Rest.FullRequestSb("POST","/drive/v3/files/1BXNQ4sMDD1WibOtcYqgQlwJa0MAa6rTQ/permissions",loo_SbReq,loo_SbJson)
if li_Success <> 1 then
    Write-Debug loo_Rest.LastErrorText
    destroy loo_Rest
    destroy loo_Oauth2
    destroy loo_JsonReq
    destroy loo_SbReq
    destroy loo_SbJson
    return
end if

if loo_Rest.ResponseStatusCode <> 200 then
    Write-Debug "Received error response code: " + string(loo_Rest.ResponseStatusCode)
    Write-Debug "Response body:"
    Write-Debug loo_SbJson.GetAsString()
    destroy loo_Rest
    destroy loo_Oauth2
    destroy loo_JsonReq
    destroy loo_SbReq
    destroy loo_SbJson
    return
end if

loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat_9_5_0.JsonObject")

loo_Json.LoadSb(loo_SbJson)

//  The following code parses the JSON response.
//  A sample JSON response is shown below the sample code.

ls_Kind = loo_Json.StringOf("kind")
ls_Id = loo_Json.StringOf("id")
ls_Type = loo_Json.StringOf("type")
ls_Role = loo_Json.StringOf("role")
li_AllowFileDiscovery = loo_Json.BoolOf("allowFileDiscovery")

Write-Debug "Example Completed."


destroy loo_Rest
destroy loo_Oauth2
destroy loo_JsonReq
destroy loo_SbReq
destroy loo_SbJson
destroy loo_Json

Sample JSON Request Body

{
  "role": "reader",
  "type": "anyone"
}

Sample JSON Response Body

{
  "kind": "drive#permission",
  "id": "anyoneWithLink",
  "type": "anyone",
  "role": "reader",
  "allowFileDiscovery": false
}