"Fossies" - the Fresh Open Source Software Archive 
Member "gdrive-2.1.1/drive/share.go" (28 May 2021, 2427 Bytes) of package /linux/misc/gdrive-2.1.1.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Go source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
1 package drive
2
3 import (
4 "fmt"
5 "google.golang.org/api/drive/v3"
6 "io"
7 "text/tabwriter"
8 )
9
10 type ShareArgs struct {
11 Out io.Writer
12 FileId string
13 Role string
14 Type string
15 Email string
16 Domain string
17 Discoverable bool
18 }
19
20 func (self *Drive) Share(args ShareArgs) error {
21 permission := &drive.Permission{
22 AllowFileDiscovery: args.Discoverable,
23 Role: args.Role,
24 Type: args.Type,
25 EmailAddress: args.Email,
26 Domain: args.Domain,
27 }
28
29 _, err := self.service.Permissions.Create(args.FileId, permission).Do()
30 if err != nil {
31 return fmt.Errorf("Failed to share file: %s", err)
32 }
33
34 fmt.Fprintf(args.Out, "Granted %s permission to %s\n", args.Role, args.Type)
35 return nil
36 }
37
38 type RevokePermissionArgs struct {
39 Out io.Writer
40 FileId string
41 PermissionId string
42 }
43
44 func (self *Drive) RevokePermission(args RevokePermissionArgs) error {
45 err := self.service.Permissions.Delete(args.FileId, args.PermissionId).Do()
46 if err != nil {
47 fmt.Errorf("Failed to revoke permission: %s", err)
48 return err
49 }
50
51 fmt.Fprintf(args.Out, "Permission revoked\n")
52 return nil
53 }
54
55 type ListPermissionsArgs struct {
56 Out io.Writer
57 FileId string
58 }
59
60 func (self *Drive) ListPermissions(args ListPermissionsArgs) error {
61 permList, err := self.service.Permissions.List(args.FileId).Fields("permissions(id,role,type,domain,emailAddress,allowFileDiscovery)").Do()
62 if err != nil {
63 fmt.Errorf("Failed to list permissions: %s", err)
64 return err
65 }
66
67 printPermissions(printPermissionsArgs{
68 out: args.Out,
69 permissions: permList.Permissions,
70 })
71 return nil
72 }
73
74 func (self *Drive) shareAnyoneReader(fileId string) error {
75 permission := &drive.Permission{
76 Role: "reader",
77 Type: "anyone",
78 }
79
80 _, err := self.service.Permissions.Create(fileId, permission).Do()
81 if err != nil {
82 return fmt.Errorf("Failed to share file: %s", err)
83 }
84
85 return nil
86 }
87
88 type printPermissionsArgs struct {
89 out io.Writer
90 permissions []*drive.Permission
91 }
92
93 func printPermissions(args printPermissionsArgs) {
94 w := new(tabwriter.Writer)
95 w.Init(args.out, 0, 0, 3, ' ', 0)
96
97 fmt.Fprintln(w, "Id\tType\tRole\tEmail\tDomain\tDiscoverable")
98
99 for _, p := range args.permissions {
100 fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s\n",
101 p.Id,
102 p.Type,
103 p.Role,
104 p.EmailAddress,
105 p.Domain,
106 formatBool(p.AllowFileDiscovery),
107 )
108 }
109
110 w.Flush()
111 }