...
1 package storage
2
3 import "strings"
4
5 type Scope int
6
7 const (
8 ScopeRead Scope = 1 << iota
9 ScopeWrite
10 ScopeDelete
11 ScopeSignURL
12
13 ScopeRW = ScopeRead | ScopeWrite
14 ScopeRWD = ScopeRW | ScopeDelete
15 )
16
17 func (s Scope) Has(s2 Scope) bool {
18 return s&s2 == s2
19 }
20
21 func (s Scope) String() string {
22 if s == 0 {
23 return "none"
24 }
25
26 var scopes []string
27 if s.Has(ScopeRead) {
28 scopes = append(scopes, "read")
29 }
30 if s.Has(ScopeWrite) {
31 scopes = append(scopes, "write")
32 }
33 if s.Has(ScopeDelete) {
34 scopes = append(scopes, "delete")
35 }
36 if s.Has(ScopeSignURL) {
37 scopes = append(scopes, "sign")
38 }
39
40 return strings.Join(scopes, ",")
41 }
42
View as plain text