@@ -4,8 +4,20 @@ import "context"
44
55type ACLCmdable interface {
66 ACLDryRun (ctx context.Context , username string , command ... interface {}) * StringCmd
7+
78 ACLLog (ctx context.Context , count int64 ) * ACLLogCmd
89 ACLLogReset (ctx context.Context ) * StatusCmd
10+
11+ ACLSetUser (ctx context.Context , username string , rules ... string ) * StatusCmd
12+ ACLDelUser (ctx context.Context , username string ) * IntCmd
13+ ACLList (ctx context.Context ) * StringSliceCmd
14+
15+ ACLCat (ctx context.Context ) * StringSliceCmd
16+ ACLCatArgs (ctx context.Context , options * ACLCatArgs ) * StringSliceCmd
17+ }
18+
19+ type ACLCatArgs struct {
20+ Category string
921}
1022
1123func (c cmdable ) ACLDryRun (ctx context.Context , username string , command ... interface {}) * StringCmd {
@@ -33,3 +45,45 @@ func (c cmdable) ACLLogReset(ctx context.Context) *StatusCmd {
3345 _ = c (ctx , cmd )
3446 return cmd
3547}
48+
49+ func (c cmdable ) ACLDelUser (ctx context.Context , username string ) * IntCmd {
50+ cmd := NewIntCmd (ctx , "acl" , "deluser" , username )
51+ _ = c (ctx , cmd )
52+ return cmd
53+ }
54+
55+ func (c cmdable ) ACLSetUser (ctx context.Context , username string , rules ... string ) * StatusCmd {
56+ args := make ([]interface {}, 3 + len (rules ))
57+ args [0 ] = "acl"
58+ args [1 ] = "setuser"
59+ args [2 ] = username
60+ for i , rule := range rules {
61+ args [i + 3 ] = rule
62+ }
63+ cmd := NewStatusCmd (ctx , args ... )
64+ _ = c (ctx , cmd )
65+ return cmd
66+ }
67+
68+ func (c cmdable ) ACLList (ctx context.Context ) * StringSliceCmd {
69+ cmd := NewStringSliceCmd (ctx , "acl" , "list" )
70+ _ = c (ctx , cmd )
71+ return cmd
72+ }
73+
74+ func (c cmdable ) ACLCat (ctx context.Context ) * StringSliceCmd {
75+ cmd := NewStringSliceCmd (ctx , "acl" , "cat" )
76+ _ = c (ctx , cmd )
77+ return cmd
78+ }
79+
80+ func (c cmdable ) ACLCatArgs (ctx context.Context , options * ACLCatArgs ) * StringSliceCmd {
81+ // if there is a category passed, build new cmd, if there isn't - use the ACLCat method
82+ if options != nil && options .Category != "" {
83+ cmd := NewStringSliceCmd (ctx , "acl" , "cat" , options .Category )
84+ _ = c (ctx , cmd )
85+ return cmd
86+ }
87+
88+ return c .ACLCat (ctx )
89+ }
0 commit comments