blob: 43655df7829d1cf6293a51340e944114eb76404e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package drive
import (
"io"
"fmt"
"google.golang.org/api/drive/v3"
)
type ShareArgs struct {
Out io.Writer
FileId string
Role string
Type string
Email string
Discoverable bool
Revoke bool
}
func (self *Drive) Share(args ShareArgs) (err error) {
if args.Revoke {
err = self.deletePermissions(args)
if err != nil {
return fmt.Errorf("Failed delete permissions: %s", err)
}
}
permission := &drive.Permission{
AllowFileDiscovery: args.Discoverable,
Role: args.Role,
Type: args.Type,
EmailAddress: args.Email,
}
p, err := self.service.Permissions.Create(args.FileId, permission).Do()
if err != nil {
return fmt.Errorf("Failed share file: %s", err)
}
fmt.Fprintln(args.Out, p)
return
}
func (self *Drive) deletePermissions(args ShareArgs) error {
permList, err := self.service.Permissions.List(args.FileId).Do()
if err != nil {
return err
}
for _, p := range permList.Permissions {
// Skip owner permissions
if p.Role == "owner" {
continue
}
err := self.service.Permissions.Delete(args.FileId, p.Id).Do()
if err != nil {
return err
}
}
return nil
}
|