-
Notifications
You must be signed in to change notification settings - Fork 8
/
permission_ctx.go
29 lines (23 loc) · 1.03 KB
/
permission_ctx.go
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
package service
import (
"context"
"github.com/UpCloudLtd/upcloud-go-api/v4/upcloud"
"github.com/UpCloudLtd/upcloud-go-api/v4/upcloud/request"
)
type PermissionContext interface {
GetPermissions(context.Context, *request.GetPermissionsRequest) (upcloud.Permissions, error)
GrantPermission(context.Context, *request.GrantPermissionRequest) (*upcloud.Permission, error)
RevokePermission(context.Context, *request.RevokePermissionRequest) error
}
func (s *ServiceContext) GetPermissions(ctx context.Context, r *request.GetPermissionsRequest) (upcloud.Permissions, error) {
p := make(upcloud.Permissions, 0)
return p, s.get(ctx, r.RequestURL(), &p)
}
func (s *ServiceContext) GrantPermission(ctx context.Context, r *request.GrantPermissionRequest) (*upcloud.Permission, error) {
p := upcloud.Permission{}
resp := struct{ Permission *upcloud.Permission }{Permission: &p}
return &p, s.create(ctx, r, &resp)
}
func (s *ServiceContext) RevokePermission(ctx context.Context, r *request.RevokePermissionRequest) error {
return s.create(ctx, r, nil)
}